Herbers Excel-Forum - das Archiv
Spalten mit 1 und 0 kopieren

|
Betrifft: Spalten mit 1 und 0 kopieren
von: Markus
Geschrieben am: 02.10.2003 12:15:57
Hallo Leute,
ich habe da mal ein Problem. Ich habe bereits eine Spalte angelegt (Spalte E)welche nur 1 oder 0 enthält (Können fünf mal 1 dann drei mal 0 dann wieder 1 usw. sein also nicht zusammenhängend) ich möchte nun aus allen Zeilen welche eine 1 haben die Spalte A nach B kopieren und zwar zusammenhängen, also wenn zwischendurch eine 0 kommt diese weglassen und alle mit einer 1 untereinanderkopieren. Ich hoffe ihr habt eine Idee die auch ich einsetzen kann.
Danke schon mal für Eure Hilfe.
Gruß Markus
Betrifft: Autofilter oder Formel
von: Günther Oppold
Geschrieben am: 02.10.2003 12:30:55
Hi Markus,
am leichtesten geht's wohl mit dem Autofilter.
in der die gefilterten Tabelle Spalte A markieren;
BEARBEITEN / gehe zu / Inhalte / nur sichtbare Zellen;
diese kopieren,
beim Autofilter "alle" anzeigen lassen;
nun in Spalte B die Werte eintragen.
2. Möglichkeit
in B1: {=INDEX(A:A;KKLEINSTE(WENN(E$1:E$999=1;ZEILE($1:$999));ZEILE()))}
ARRAY-Formel: die geschweifte Klammer nicht eingeben, sondern die Formeleingabe abschließen mit Strg+Umsch+Enter
Günther
Betrifft: Prima aber etwas hätte ich noch :-)
von: Markus
Geschrieben am: 02.10.2003 12:47:47
Hallo Günther.
erst mal vielen Dank geht echt Klasse. Aber eine Sache hätte ich noch in einigen Spalten ekomme ich den Ausdruck #Zahl! kann ich das unterdrücken ich hätte gerne leere Zeilen ist das möglich. Es geht darum ich möchte später alle Werte kopieren bis zur leeren Zeile. Noch eine Frage ist die Spaltenanzahl begrenzt können bis zu 50000 Daten werden??
Danke schon mal für deine Super schnelle Hilfe!
Gruß Markus
P.S. Wenn du auch noch eine Idee hast wie ich die alle Werte bis zur Leerzeile Kopiere wäre Super.
Betrifft: AW: Prima aber etwas hätte ich noch :-)
von: Günther Oppold
Geschrieben am: 02.10.2003 17:07:10
die Formel zur unterdrückung des Fehlers lautet:
{=wenn(istfehler(INDEX(A:A;KKLEINSTE(WENN(E$1:E$999=1;ZEILE($1:$999));ZEILE()));"";INDEX(A:A;KKLEINSTE(WENN(E$1:E$999=1;ZEILE($1:$999));ZEILE()))}
natürlich muss E$999 entsprechend deinen Zeilen angepasst werden!
zum schnellen Kopieren:
Du weist bestimmt, wie eine Zelle gezogen werden kann (mit dem dünnen Curser-Kreuz an der rechten unteren Zellecke). Statt ziehen - mach einen Doppelklick mit der linken Maustaste. Die Formel kopiert sich so weit nach unten, wie die linke Spalte gefüllt ist.
d.h. hast Du dort eine ununterbrochene Reihe dann gehts bis Zeile 65536. Oder du schreibst die Formel in Zelle B1, kopierst sie, markierst Spalte B und "Einfügen"
Es gibt meines Wissens keine Begrenzung der Zellen, jedoch wird die Berechnung (da die Formel eine ARRAY Formel ist und die ganze Tabelle von oben nach unten durchsucht) bei dieser Zeilenanzahl___s_e_e_e_e_h_r___langsam.
Günther
Betrifft: AW: Spalten mit 1 und 0 kopieren
von: ChrisL
Geschrieben am: 02.10.2003 12:38:52
Hi Markus
Hier noch ein Makro...
Option Explicit
Sub mach()
Dim iZeile As Long
Application.ScreenUpdating = False
Columns(2).ClearContents
For iZeile = 1 To Range("E65536").End(xlUp).Row
If Cells(iZeile, 5) = 1 Then
If Range("B1") = "" Then
Range("B1") = Cells(iZeile, 1)
Else
Cells(Range("B65536").End(xlUp).Row + 1, 2) = Cells(iZeile, 1)
End If
End If
Next iZeile
Application.ScreenUpdating = True
End Sub
Gruss
Chris
Betrifft: Bräuchte noch mal Hilfe
von: Markus
Geschrieben am: 02.10.2003 14:21:15
Also das Programm von Chris funktioniert.
Wie kann ich den Code umschreiben damit er die Werte von Spalte D nach Spalte f Kopiert wenn Die Spalte E den Wert 1 hat.
Danke und schönes Wochenende
Gruß Markus
Betrifft: AW: Bräuchte noch mal Hilfe
von: ChrisL
Geschrieben am: 02.10.2003 14:36:47
Hi Markus
Cells(Zeile, Spalte)
Gruss
Chris
Sub mach()
Dim iZeile As Long
Application.ScreenUpdating = False
Columns(2).ClearContents
For iZeile = 1 To Range("E65536").End(xlUp).Row
If Cells(iZeile, 5) = 1 Then
If Range("F1") = "" Then
Range("F1") = Cells(iZeile, 4)
Else
Cells(Range("B65536").End(xlUp).Row + 1, 6) = Cells(iZeile, 4)
End If
End If
Next iZeile
Application.ScreenUpdating = True
End Sub
Betrifft: AW: Bräuchte noch mal Hilfe geht so nicht
von: Markus
Geschrieben am: 06.10.2003 09:07:24
Hallo Chris oder alle anderen,
wenn ich denn Code so verwende kopiert sich nur der Wert von D3 nach F1 sonst nichts, kann es daran liegen, dass ich in der ersten Zeile Texte stehen habe und keine Werte oder woran liegt das, und wenn ja wie fange ich an erst ab der zweiten Zeile zu kontrollieren.
danke euch schon mal
Gruß Markus
Betrifft: AW: Bräuchte noch mal Hilfe geht so nicht
von: ChrisL
Geschrieben am: 06.10.2003 11:40:59
Hi Markus
Stell mal deine Datei in den Anhang.
Gruss
Chris
Betrifft: Tabelle mit Link für Chris
von: Markus
Geschrieben am: 06.10.2003 12:11:23
Hallo Chris,
in der Tabelle 3 möchte ich alle Werte der Spalte D nach F kopieren wenn in der Spalte E eine 1 steht. Dann möchte ich eine weitere Abfrage nach allen Werten die nun in F stehen machen (die gleiche Abfrage steht momentan noch in der Tabelle 4 Spalte E, soll aber in Tabelle3 Spalte G). Die Abfrage wieder mit 1 und 0 in der Spalte G. Und dann alle Werte die nun eine 1 haben nach Spalte H kopieren.
Ich hoffe du verstehst wie ich das meine.
Der Link hat folgenden Namen
https://www.herber.de/bbs/user/1297.xls
Danke für die ganze Arbeit die du dir machst.
Gruß
Markus
Betrifft: AW: Tabelle mit Link für Chris
von: ChrisL
Geschrieben am: 06.10.2003 13:47:07
Hi Markus
Versuch mal so...
Option Explicit
Sub test()
Dim iZeile As Long
Application.ScreenUpdating = False
Columns(6).ClearContents
For iZeile = 1 To Range("E65536").End(xlUp).Row
If Cells(iZeile, 5) = 1 Then Cells(Range("F65536").End(xlUp).Row + 1, 6) = Cells(iZeile, 4)
Next iZeile
Application.ScreenUpdating = True
End Sub
Gruss
Chris