Excel 2010/2013 - beim Einfügen ausgeblendete Zeilen auslassen

loopzone

gesperrt
Registriert
14 Juli 2013
Beiträge
815
Hallo zusammen.

Ich bin gestern beinahe wahnsinnig geworden in einer Excelliste Werte einzufügen. Ich nehme an, dass ich irgendwas falsch mache.

Ich habe eine Liste mit Werten in einer Spalte. Jetzt habe ich einen Filter darüber gelegt um unwichtige Werte auszublenden.
Ich habe eine zweite Liste deren Werte ich zur ersten Liste in eine andere Spalte einfügen möchte. Diese Werte sind ungefiltert, hintereinander weg.
Wenn ich die zweite Liste nun versuche der ersten, gefilterten Liste anzufügen, werden auch die nicht sichtbaren Zeilen befüllt. Ich möchte aber natürlich nur die sichtbaren Zeilen ergänzen.

Was mache ich falsch?

Grüße
 
Du möchtest also nur sichtbare Zeilen kopieren, verstehe ich das richtig?
Falls ja, dann sollte dir das weiterhelfen.
 
  • Thread Starter Thread Starter
  • #3
Hallo Tourgott,

diesen link kenne ich. Ich möchte, dass nur in die sichtbaren Zellen eigefügt wird. Ich versuche es mal anhand eines einfachen Beispiels zu erläutern.
So sieht Liste 1 ursprünlich aus:
Anhang anzeigen 32297

So sieht Liste 1 aus wenn ich alles unwichtige herausfiltere:
Anhang anzeigen 32298

Nun kommt Liste 2 ins Spiel die so aussieht und nicht gefiltert werden muss:
Anhang anzeigen 32299

Alle Werte aus Liste 2 sollen nun hinter die wichtigen (gefilterten) Elemente aus Liste 1 eingefügt werden:
Anhang anzeigen 32300

Excel fügt die Werte aus Liste 2 aber auch in die unsichtbaren Zeilen aus Liste 1 ein:
Anhang anzeigen 32301
 
Ja, daran bin ich auch schon des Öfteren verzweifelt. Ich bin dann irgendwann dazu übergegangen mit Pivot zu arbeiten. Dadurch lassen sich Listen sehr schnell erstellen und gefilterte Daten/Zeilen problemlos herauskopieren und mit anderen Werten zusammensetzen.
 
Das ganze lässt sich aber ziemlich simpel über VBA lösen

[src=vb]
Public Function fConCatIntoFiltered(ByVal strWSFiltered As String, ByVal strTargetNewColumn As String, ByVal strAdditionalWS As String, ByVal strAdditionalColumn, Optional lngTargetStartRow As Long = 1, Optional lngAdditionalStartRow As Long = 1)
Dim wsT As Worksheet
Dim wsS As Worksheet
Dim lastCol As Long
Dim rng As Range
Dim lngARow As Long
Dim strData2Copy As String
lngARow = lngAdditionalStartRow
Set wsT = Worksheets(strWSFiltered)
lastCol = wsT.UsedRange.Rows.Count
Set wsS = Worksheets(strAdditionalWS)

'Debug.Print lastcol
For i = lngTargetStartRow To lastCol
Set rng = wsT.Range(wsT.Cells(i, 1), wsT.Cells(i, 2))
If rng.EntireRow.Hidden = False Then
strData2Copy = wsS.Cells(lngARow, strAdditionalColumn)
wsT.Cells(i, strTargetNewColumn) = strData2Copy
Debug.Print wsT.Cells(i, 1)


lngARow = lngARow + 1
End If
Next i

Set wsT = Nothing
Set wsS = Nothing
End Function

[/src]

Aufruf über
[src=vb]
tmp= fConCatIntoFiltered("t1", "B", "t2", "A", 2, 1)
[/src]

t1 ist das Worksheet das gefiltert ist, in Spalte "B" wird der Wert vom anderen Worksheet (t2) , Spalte "A" eingefügt.
Die Daten des gefilterten WS starten in Zeile 2 , die Daten des 2. worksheets in Zeile 1
 
Der uralte Standard-Spruch des Hauses Microsoft: "It's not a bug, it's a feature." :D

Und ausnahmsweise sehe ich das in diesem Fall auch so. Die Zeilen sind ja noch vorhanden. Aber es wäre durchaus wünschenswert, wenn (in einer der kommenden Versionen) die Möglichkeit angeboten werden würde, für eine solche Aktion die versteckten Zeilen quasi als nicht existent zu betrachten.
 
Hallo,
ich habe es über den Code von braegler versucht, allerdings bin ich nicht ausreichend VBA-bewandert: hab den Code zwar in ein Modul eingefügt, aber wie kann ich die Funktion aufrufen? Ich verstehe leider nicht wo ich den zweiten Teil einfügen muss (tmp= ...).
Freue mich über jede Hilfe!
 
Wenn Du den Code nur einmal ausführen willst, kannst Du das direkt im VBA Fenster machen.
Dafür das "Direktfenster" aktivieren, und dort z.B.
Code:
Expand Collapse Copy
debug.print fConCatIntoFiltered("t1", "B", "t2", "A", 2, 1)
eingeben.
 
Die Anhänge sind hier inzwischen nicht mehr da, waren eventuell einmal defekt :( aber so wie sich das liest sollte das doch auch über einen sverweis gehen, je nachdem ob es eine auch Spalte gibt.
Die Formel Kopieren/ mit dem Punkt rechts unten an der Zelle, geht schön über "nur gefiltert".
Zusätzlich, wenn man so etwas öfter machen sollte, baut man damit eine History mit in die Tabelle ein wann welche Infos ergänzt wurden.
 
Zurück
Oben