Clever-Excel-Forum

Normale Version: VBA Zeile in eine Arbeitsmappe kopieren wenn in der Zeile eine 1 steht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich brauche ein VBA Code um folgendes zu machen, ich möchte die gesamte Zeile übernehmen wenn in C2 bis N2 irgendwo eine "1" steht, sollte dort keine "1" stehen soll die Zeile nicht in ein neues Arbeitsblatt übernommen werden. Anbei ein Beispiel.

Ich hoffe Ihr könnt mir weiter helfen. [attachment=7851]

Vielen Dank & beste Grüße


Ole
Hallo Ole,

mit dem Spezialfilter so z.B.:
Sub EinserInNeuesBlatt()
Dim owsAlt As Worksheet
Dim oWsNeu As Worksheet

Set owsAlt = Worksheets("Tabelle1")
With Worksheets.Add(After:=Sheets(Sheets.Count))
owsAlt.Rows("1:1").Copy .Cells(1)
.Range("C2,D3,E4,F5,G6,H7,I8,J9,K10,L11,M12,N13").Value = 1
owsAlt.Columns("A:N").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("A1:N13"), CopyToRange:=.Range("A15"), Unique:=False
.Rows("1:14").Delete
.Range("A1").Select
End With
End Sub
Gruß Uwe
Vielen Dank Uwe!

Es klappt wirklich sehr gut!

Jetzt habe ich mal eine Frage ist es noch möglich, das das Makro die Zeilen zusammenaddiert wo Geschäftsart, Code und der Monat gleich sind?
Also dass aus
GA    Code         Feb
GTF  E4EE            1
GTF  E4EE            1

soll dann bitte

GTF E4EE             2
werden.

Vielen Dank & liebe Grüße
Ole
(09.11.2016, 10:17)Olossos schrieb: [ -> ]Vielen Dank Uwe!

Es klappt wirklich sehr gut!

Jetzt habe ich mal eine Frage ist es noch möglich, das das Makro die Zeilen zusammenaddiert wo Geschäftsart, Code und der Monat gleich sind?
Also dass aus
GA    Code         Feb
GTF  E4EE            1
GTF  E4EE            1

soll dann bitte

GTF E4EE             2
werden. und dann am besten nach Geschäftsart absteigend sortiert noch.

Vielen Dank & liebe Grüße
Ole
Hallo Ole,

vielleicht so:
Sub EinserInNeuesBlatt()
 Dim owsAlt As Worksheet
 Dim lngLZ As Long
 
 Set owsAlt = Worksheets("Tabelle1")
 With Worksheets.Add(After:=Sheets(Sheets.Count))
   owsAlt.Rows("1:1").Copy .Cells(1)
   .Range("C2,D3,E4,F5,G6,H7,I8,J9,K10,L11,M12,N13").Value = 1
   owsAlt.Columns("A:N").AdvancedFilter Action:=xlFilterCopy, _
       CriteriaRange:=.Range("A1:N13"), CopyToRange:=.Range("A15"), Unique:=False
   .Rows("1:14").Delete
   lngLZ = .UsedRange.Rows.Count
   With .Range("C2:N" & lngLZ)
     .SpecialCells(xlCellTypeConstants).Formula = "=COUNTIFS($A$2:$A$" & lngLZ & ",$A2,$B$2:$B$" & lngLZ & ",$B2)"
     .Value = .Value
     .CurrentRegion.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlYes
     .CurrentRegion.AdvancedFilter xlFilterInPlace, , , True
   End With
   .Range("A1").Select
 End With
End Sub
Gruß Uwe
Hallo Uwe,

das funktioniert leider nicht. Hast du sonst ne Idee wir ich das mit Formeln machen kann?

Grüße Ole
Hallo Ole,

(09.11.2016, 14:22)Olossos schrieb: [ -> ]das funktioniert leider nicht. Hast du sonst ne Idee wir ich das mit Formeln machen kann?

nein, habe ich nicht, zumal ich nicht einmal weiß, was nicht "funktioniert".

Gruß Uwe
Hallo Ole,

Eine Formellösung wäre die Excel-Funktion SUMMEWENNS
Tabellenblattname: Tabelle1
ABCDEF
1WoWannWasSuche
2Geragleich3WoWannWas
3Jenagleich8GeraGleich7
4Gerasofort6
5Geragleich4

Benutzte Formeln:
F3: =SUMMEWENNS(C2:C5;A2:A5;"Gera";B2:B5;"gleich")
© schauan

Alternativen wäre u.a. eine "intelligente" Tabelle oder Liste, wo Du filterst und in der Ergebniszeile dann das TEILERGEBNIS siehst.
Hallo André,

(11.11.2016, 16:53)schauan schrieb: [ -> ]Eine Formellösung wäre die Excel-Funktion SUMMEWENNS

welche nichts Neues ist. Wink

Gruß Uwe