Betrifft: Zellen aus zwei Zeilen kopieren
von: Einzel
Geschrieben am: 20.01.2010 19:20:06
Hallo
brauch Hilfe bei einem Code.
Ich habe eine datenbank die ab A3 beginnt. (Tabelle1)
Und zwar soll es so ablaufen
Wenn in A3 "A" steht dann einlesen B3, D3, E3, G3,
weiter wenn in A4 "B" steht dann einlesen D3
Nun in tabelle2 einfügen ab A4 den Inhalt von Einlesen aus A3 und A4
und zwar in der Reihenfolge B3 aus Zeile 3, D3 aus Zeile 3, E3 aus Zeile 3, D3 aus Zeile 4 und wieder G3 aus Zeile 3.
Dann das ganze wiederholen aus A5 und A6. und in Tabelle2 in A5 einfügen das ganze bis zum Ende. ende umbekannt.
Habe es mal so angefangen aber es geht so nicht und er würde wenn auch nur einmal kopieren.
Sub einlesen() Dim x As String Dim y As String Sheets("Tabelle1").Activate ' Datei auswählen / anpassen x = [B2] Range("A3").Select If ActiveCell = A Then Copy = [B3] & [D3] & [E3] & [G3] End If If ActiveCell = B Then Copy = [D3] End If y = Copy Sheets("Tabelle2").Activate Range("A4").Select ActiveCell = y [B2] = x End SubHätte jemand eine Idee?
Betrifft: AW: Zellen aus zwei Zeilen kopieren
von: Daniel
Geschrieben am: 20.01.2010 20:15:04
Hi
bei deinem Kenntnisstand bietest sich vielleicht eher eine Formelbasierte Lösung an.
hier ein Makro, daß die für das Einlesen der Daten benötigte Formeln in die Zellen schreibt.
Sub Einlesen() Dim Zeilen As Long Zeilen = WorksheetFunction.CountIf(Sheets("Tabelle1").Columns(1), "A") With Sheets("Tabelle2") .Cells(4, 1).Resize(Zeilen).FormulaR1C1 = "=INDEX(Tabelle1!C2,(ROW()-4)*2+3)" .Cells(4, 2).Resize(Zeilen).FormulaR1C1 = "=INDEX(Tabelle1!C4,(ROW()-4)*2+3)" .Cells(4, 3).Resize(Zeilen).FormulaR1C1 = "=INDEX(Tabelle1!C5,(ROW()-4)*2+3)" .Cells(4, 4).Resize(Zeilen).FormulaR1C1 = "=INDEX(Tabelle1!C4,(ROW()-4)*2+4)" .Cells(4, 5).Resize(Zeilen).FormulaR1C1 = "=INDEX(Tabelle1!C7,(ROW()-4)*2+3)" With .Cells(4, 1).Resize(Zeilen, 5) .Formula = .Value End With End With End SubAllerdings werden die Formeln wieder eleminiert, wenn du dir die Formeln anschauen willst, musst du das ".Formula = .Value" löschen oder auskommentieren.
Betrifft: AW: Zellen aus zwei Zeilen kopieren
von: Einzel
Geschrieben am: 20.01.2010 20:40:59
Erst mal danke für den Code er klappt super.
Zweitens danke für die Tipps.
Gruß
Stephan
Betrifft: AW: Zellen aus zwei Zeilen kopieren
von: Einzel
Geschrieben am: 20.01.2010 21:53:38
Hallo Daniel,
habe leider doch noch ein Problem was ich so nicht läsen kann
die Tabelle1 ist in daten.xlsm
und die Tabelle2 in datenauswertung.xlsm
Hättest du dafür auch noch mal ein Tipp.
MfG
Stephan
Betrifft: AW: Vollständig Referenzieren
von: Daniel
Geschrieben am: 20.01.2010 22:41:00
Hi
wenn die beiden Tabellenblätter in verschiedenen Dateien sind, musst du halt den entsprechenden Dateinamen noch mit angeben, also statt
Sheets("Tabelle1").Cells(1,1)
musst du dann entsprechend:
Workbooks("Daten.xlsm").Sheets("Tabelle1").Cells(1,1)
schreiben. wenn du das "Workbooks(...)" weglässt, wird immer die gerade aktive Datei verwendet, und da ist ja nicht immer sicher, welches grade aktiv ist.
wenn die Dateigemeint ist, in der sich das Makro befindet, dann kann man auch stattdessen ThisWorkbook.Sheets("Tabelle1").Cells(1,1) schreiben, dann braucht man das Makro nicht ändern, wenn man die Datei mal umbenennt.
Gruß, Daniel
ps: das ganze funkionier nur, wenn beide Dateien geöffnet sind.