Excel nur in gefilterte Zellen Werte einfügen?


28.01.2021, 19:00

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

Vom Fragesteller als hilfreich ausgezeichnet

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
Terminator96 
Fragesteller
 30.01.2021, 02:04

Mega, probiere ich gleich mal aus

0
Terminator96 
Fragesteller
 30.01.2021, 03:44
  • =WENN(A1="DB";1+GANZZAHL((ZÄHLENWENN($A$1:A1;"DB")-1)/5)-5*GANZZAHL((ZÄHLENWENN($A$1:A1;"DB")-1)/25);"")

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

0
DanKirpan  01.02.2021, 08:36
@Terminator96

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
1

Du könntest statt zuerst zu filtern, sortieren und dann filtern und kopieren.

Dabei kannst Du die Werten nach Zeilen markieren und kopieren.

Woher ich das weiß:eigene Erfahrung
Terminator96 
Fragesteller
 28.01.2021, 18:31

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.

0
GutenTag2003  28.01.2021, 18:34
@Terminator96

Mit einer Hilfsspalte könntest Du die Zeilen zuvor z.B. durchnummerieren und nach dem Kopiervorgang zurück sortieren.

0
Terminator96 
Fragesteller
 28.01.2021, 18:55
@GutenTag2003

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.

0