Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1636to1640
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten kopieren und gleichzeitig berechnen mit VBA

Daten kopieren und gleichzeitig berechnen mit VBA
14.08.2018 11:05:49
Oliver
Hallo liebes Forum,
ich bräuchte bitte einmal eure Hilfe.
Ich stehe noch ziemlich am Anfang meines Problems und würde gerne wissen, ob ich auf dem richtigen Weg bin, und ob mir jemand helfen könnte.
Folgendes will ich erreichen, um mir mein Leben etwas einfacher zu machen:
Ich bekomme regelmäßig eine File zugeschickt. (Strucktur immer gleich, Name (File und Tab) wahrscheinlich auch - das würde ich zu Beginn mal so annehmen. Notfalls bennene ich es erstmal um)
Das File hat folgende Stucktur:
A (eine Nummer)__B (eine Wert in EUR)____C (text Beschreibung)
868944__________693,00__________________1blabla
868949__________(2.500,00)______________2blabla
...
Was ich nun mache möchte ist Folgendes:
Ich möchte einen Teil dieser Zeilen (Auswahlkriterium folgt) kopieren und an das Ende der Liste kopieren/anhängen. Die Länge der Liste (Zeilen) wird also entsprechend länger.
Auswahlkriterien sind:
1. In Spalte A nur bestimmte Werte
2. Spalte C alles was mit "1bla*" anfängt.
Gleichzeitig müsste ich die Werte in Spalte B berechnen. (also zum Beispiel *-1 (Vorzeichen ändern) und * einen festen % Satz) - soweit bin ich aber noch nicht
Nun meine erste Frage:
- geht sowas überhaupt einfach mit VBA? Da müsste ich sicher mit Arrays arbeiten (und da lässt es bei mir leider aus)
- Bin ich mit meinem Code schonmal auf dem richtigen Weg? - Ertmal habe ich nur versucht die _
Zeile zu Kopieren...)

Dim leereZeile
ActiveSheet.Range("$A$1:$I$3000").AutoFilter Field:=1, Criteria1:=Array( _
"868944", "868949", "868950", "868953", "868954", "868955"), Operator:=xlFilterValues
ActiveSheet.Range("$A$1:$I$3000").AutoFilter Field:=7, Criteria1:= _
"=1bla*", Operator:=xlAnd
leereZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
Selection.SpecialCells(xlCellTypeVisible).Copy_        'hier funktionierts schon nicht
ActiveSheet("input").Range ("A" & leereZeile)

Ich bin euch für jede Hilfe sehr dankbar.
Viele Grüße
Oliver

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW:ungeprüft
14.08.2018 14:24:58
Fennek

with cells(1).currentRegion
.AutoFilter Field:=1, Criteria1:=Array( _
"868944", "868949", "868950", "868953", "868954", "868955"), Operator:=xlFilterValues
.AutoFilter Field:=7, Criteria1:= "=1bla*", Operator:=xlAnd
.copy Sheets("input").cells(rows.count, 1).end(xlup).offset(1)
end with

AW: AW:ungeprüft
14.08.2018 15:06:06
Oliver
Hallo Fennek,
danke dir für deine Antwort!
Ich habe es eben getestet. Läuft super, die Auswahl stimmt. Allerdings (komischer Weise) "überschreibt er mir die letzten 17 Zeilen der Originaleinträge.
Die Liste hatte vorher 1723 Zeilen. (Auswahl ergibt richtigerweise 153) Sollten also nachher (1723+153)1876 Zeilen sein. Sind aber "nur" 1859.
Ich habe die Zeilen 1:1 abgeglichen. Bei den Originalzeilen passt alles bis Zeile 1706 und ab dann "Überschreibt" er sozusagen die letzten 17 und packt dann die 153 dran.
Ich suche schon, woran es liegen könnte. Finde aber noch keinen Grund. (Keine leeren Zeilen dabei oder so was) Hast du eine Idee, woran das liegen könnte?
Vielen Dank aber schonmal bis hierher! Super!
Oliver
Anzeige
AW: 1. freie Zeile in "Input"
14.08.2018 16:26:28
Fennek
Hallo,
ist im Blatt "Input" die Spalte A bis zum Ende der Tabelle belegt?
Ansonsten müßte man anstalle 1 (Spalte A) die relevante Spalte nutzen.
mfg
AW: 1. freie Zeile in "Input"
14.08.2018 17:51:07
Oliver
Hallo Fennek,
ja, die Spalte 1 (A) ist bis unten gefüllt. Zwischendurch sind zwar ein paar leere, aber deutlich mehr als 17. Sollte also kein Problem sein, die letzten sind alle befüllt.
Was genau meinst du denn mit "relevante Spalte nutzen"?
Copy Sheets("input").Cells(Rows.Count, 1).End(xlUp).Offset(1)
Die (Row.Counts, 18) würde ja die kopierten Zeilen nach rechts verschieben... Also nicht in A kopieren, sondern entsprechend nach rechts in R versetzt.
Mit einem Offset (18) würde es zwar funktionieren... ich verstehe aber immer noch nicht warum, und das kann sich ja auch mal ändern...?
Sehr seltsam... Noch eine Idee?
Vielen lieben Dank
Oliver
Anzeige
AW: 1. freie Zeile in "Input"
17.08.2018 10:02:36
Oliver
Hallo liebes Forum,
ich muss leider nochmal nachfragen, weil ich keine Lösung finde...
Hat hier vielleicht noch jemand eine Idee, warum mir die letzten 18 Zeilen überschrieben werden?
Ich hoffe auf Hilfe ;-)
Viele Grüße
Oliver

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige