Excel nur in gefilterte Zellen Werte einfügen?
Hallo,
Ich habe eine gefilterte Spalte und würde gerne nur in den gefilterten Spalten meine Werte einfügen. Wenn ich jetzt die Spalten aus einer anderen Tabelle kopiere und in den gefilterten Zellen einfügen möchte, dann fügt er die Werte auch in den nicht sichtbaren Zellen dazwischen ein. Aber ich brauche die Werte genau in der Reihenfolge in den von mir gefilterten Zellen. Bei excel geht das ja leider nicht, dass man nur in die gefilterten Zellen den Block an Werten einfügt und die ausgeblendeten Hellen übersprungen werden.
Deswegen hätte ich gerne ein VBA Code den ich per Tastenkürzel verwenden wollen würde. Alle die ich bei google gefunden habe, haben nicht funktioniert.
Links wäre okay und rechts wäre falsch.
Je nach Tabelle ändert sich auch die Position von dem "DB". Deswegen sind die freien Zellen dazwischen immer mal woanders. Also eigentlich möchte ich nur das er das nach dem Muster ausfüllt aber nur bei den Zellen wo auch das DB steht. Also 1 2 3 4 5 1 2 3 4 5 und in der anderen Spalt von 1 bis 5 alles 5 mal und dann wieder von vorne. Aber die Zeilen ohne DB sollen übersprungen werden. Deswegen wollte ich erst filtern und dann einfach die Menge reinkopieren. Geht aber ja auch nicht.
2 Antworten
Hallo,
wenn ich dich richtig verstehe blendest du nur Leerzeilen aus. Das kannst du dir sparen wenn du die Muster direkt per Formel erstellst:
- 1,2,3,4,5:
- =WENN(A1="DB";REST(ZÄHLENWENN($A$1:A1;"DB")-1;5)+1;"")
- 1,1,1,1,1,2,2,2,2,2,3,...
- =WENN(A1="DB";1+GANZZAHL((ZÄHLENWENN($A$1:A1;"DB")-1)/5)-5*GANZZAHL((ZÄHLENWENN($A$1:A1;"DB")-1)/25);"")
Falls du doch auch Zeilen mit DB ausblendest die übersprungen werden sollen:
Sub muster_ausfullen()
Dim aSpa As Long, lZei As Long
Dim z As Long, zahlDB As Long, wertA As Long, wertB As Long
Dim Spalte As String, suchwort As String
suchwort = "DB"
'Bereichsgröße festlegen
Spalte = InputBox("Welche Spalte als Referenz verwenden?")
If Spalte = "" Then
End
Else
If IsNumeric(Spalte) Then
aSpa = Spalte * 1
Else
If Not IsNumeric(Left(Spalte, 1)) And Not IsNumeric(Right(Spalte, 1)) Then
aSpa = ActiveSheet.Range(Spalte & 1).Column
ElseIf Not IsNumeric(Left(Spalte, 1)) And IsNumeric(Right(Spalte, 1)) Then
aSpa = ActiveSheet.Range(Spalte).Column
Else
MsgBox "Kann die Eingabe " & Spalte & " nicht eindeutig zuordnen."
End
End If
End If
End If
lZei = ActiveSheet.Cells(Rows.Count, aSpa).End(xlUp).Row
'Werte einfügen
On Error GoTo Errorhandler
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For z = 1 To lZei
If Trim(ActiveSheet.Cells(z, aSpa)) = Trim(suchwort) And Rows(z).EntireRow.Hidden = False Then
zahlDB = zahlDB + 1
'wertA = 1,2,3,4,5
wertA = (zahlDB - 1) Mod 5 + 1
'wertB =1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,
wertB = 1 + Int((zahlDB - 1) / 5) - 5 * Int((zahlDB - 1) / 25)
ActiveSheet.Cells(z, aSpa + 1) = wertA
ActiveSheet.Cells(z, aSpa + 2) = wertB
End If
Next z
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Calculate
MsgBox "Durchlauf beendet"
Exit Sub
Errorhandler:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Calculate
MsgBox "Ein Fehler ist aufgetreten, Durchlauf abgebrochen."
End Sub
bitte^^
ja, es ist kein Problem die Formel für ein beliebiges Muster in dieser Art anzupassen:
- =WENN(A1="DB";1+GANZZAHL((ZÄHLENWENN($A$1:A1;"DB")-1)/5)-4*GANZZAHL((ZÄHLENWENN($A$1:A1;"DB")-1)/20);"")
- 5 -> Anzahl Wiederholungen; 4 -> Maximum bis zu dem gezählt wird, 20 -> Produkt aus Wiederholungen und Zählermaximum
Du könntest statt zuerst zu filtern, sortieren und dann filtern und kopieren.
Dabei kannst Du die Werten nach Zeilen markieren und kopieren.
Aber die Zeilen müssen da bleiben wo die sind also die leeren Zeilen müssen vorhanden bleiben. Und ich will ja in den gefilterten Zeilen was einfügen und nicht die gefilterten Zeilen kopieren.
Mit einer Hilfsspalte könntest Du die Zeilen zuvor z.B. durchnummerieren und nach dem Kopiervorgang zurück sortieren.
ibb .co/fDqh00g
Da ist die Tabelle links ist das Muster richtig eingefügt und recht genau so wie es nicht sein soll.
Da ich leider auch nicht einstellen kann das er jedes DB anfängt zu zählen und dann nach dem Muster ausfüllt: 1 2 34 5 dann von vorne 1 2 3 4 5 und daneben auch von 1 bis 5 halt nur jeweils 5 mal jede Zahl. Also wollte ich einfach das einfügen was ja bei gefilterten Zellen auch nicht geht. Also eigentlich möchte einfach nur wo db steht die beiden Spalten nach den beiden Mustern ausgefüllt haben. Ohne die leeren Zeilen mit auszufüllen so wie es rechts ist. Also so wie links möchte ich das automatisch haben und rechts ist falsch.
Davor natürlich noch https:// ich musste den Link teilen damit ich kommentieren dsrf
die funktionieren beide herzlichen Dank!!!!
kannst du mir aber die nochmal auf 1-4 machen also: 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 ohne die 5 quasi