Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wenn Wert in Zelle grösser 0, dann kopiere...

Forumthread: Wenn Wert in Zelle grösser 0, dann kopiere...

Wenn Wert in Zelle grösser 0, dann kopiere...
11.09.2008 12:35:49
Bernhard
Hallo Excel Experten,
wer kann mir bei folgender Aufgabenstellung helfen:
In einer Tabelle1 werden Käufe/ Verkäufe erfasst (Spalten A - F). Wenn nun in der Spalte H ein Wert grösser Null steht, dann sollen der Inhalt der Zellen A bis C und E, F und H zeilenweise in Tabelle2 kopiert werden.
https://www.herber.de/bbs/user/55321.xls
Danke für Eure Hilfe,
Bernhard
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bereich kopieren
11.09.2008 13:10:45
Backowe
Hi,
VBA-Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Code in das entsprechende Tabellenblatt!
If Not Intersect(Target, Range("H2:H" & Cells(Rows.Count, "H").End(xlUp).Row)) Is Nothing And Target.Count = 1 Then
  If Target > 0 Then
    Range(Cells(Target.Row, "A"), Cells(Target.Row, "H")).Copy _
      Destination:=Sheets("Tabelle2").Range("A" & Sheets("Tabelle2").Cells(Rows.Count, "A").End(xlUp).Row + 1)
  End If
End If
End Sub
Gruß Jürgen
AW: Bereich kopieren
Bernhard

Hallo Jürgen,
Danke auch Dir. Konnte Deinen Code noch nicht ausprobieren, da jetzt anderweitig beschäftigt. Rückmeldung morgen.
Gruss
Bernhard
AW: Bereich kopieren
Bernhard

Hallo Jürgen,
habe heute Deinen Code in meine Tabelle eingefügt, aber es tut sich nichts? Da meine VBA-Kenntnisse (noch) gering sind komme ich nicht auf den Fehler.
Danke aber trotzdem für Deine Mühe
Gruss
Bernhard
Ich habe so getestet!
Backowe

Hi Bernhard,
ich habe eine Tabelle 1 und eine Tabelle2 angelegt. Der Code kommt in die Tabelle1, da hatte ich dein Beispiel hin kopiert. Jedes Mal, wenn in Spalte H ein Wert größer 0 eingegeben wird, wird automatisch der Bereich von A bis H in die Tabelle 2 kopiert, immer in den nächste leere Zeile in Tabelle 2. Das Marko wird nicht angestoßen, sondern startet automatisch!
Also nochmals testen! :)
Gruß Jürgen
AW: Wenn Wert in Zelle grösser 0, dann kopiere...
Peter

Huhu,
oder so. Füg dir einen CommandButton auf Tabelle1 ein und weis dem Click-Ereignis diesen Code zu.
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim intWert As Integer, intSpalte As Integer, intZeile As Integer, intAnz As Integer
ActiveWorkbook.Worksheets("Tabelle2").Range("a1:A60000").ClearContents
intSpalte = 8
intZeile = 1
intAnz = WorksheetFunction.CountA(ActiveWorkbook.Worksheets("Tabelle1").Range("A2:A60000"))
Zae2 = 0
For Zae1 = 1 To intAnz
    intWert = ActiveWorkbook.Worksheets("Tabelle1").Cells(intZeile + Zae1, intSpalte)
    If intWert > 0 Then
        ActiveWorkbook.Worksheets("Tabelle1").Range(Cells(intZeile + Zae1, 1), Cells(intZeile + Zae1, 8)).Copy
        ActiveWorkbook.Worksheets("Tabelle2").Cells(intZeile + Zae2, 1).PasteSpecial
        Application.CutCopyMode = False
        Zae2 = Zae2 + 1
    End If
Next Zae1
Application.ScreenUpdating = True
End Sub
Gruß Henrik
AW: Wenn Wert in Zelle grösser 0, dann kopiere...
Bernhard

Hi Henrik,
bin gerade erst dazu gekommen Deinen Code zu testen. Klappt prima.
Herzlichen Dank
Gruss
Bernhard
per Formel
WF

Hi Bernhard,
schreib in A2 der Tabelle2 folgende Arrayformel:
{=WENN(ZÄHLENWENN(Tabelle1!$H:$H;">0")<ZEILE(A1);"";INDEX(Tabelle1!A:A; KKLEINSTE(WENN(Tabelle1!$H$2:$H$99>0;ZEILE($2:$99));ZEILE(A1)))) }
nach rechts und nach unten kopieren / Spalte D dann löschen
ARRAY-Formel {=geschweifte Klammern} nicht eingeben;
Abschluß der Formel mit gleichzeitig Strg / Shift / Enter; - das erzeugt sie.
Salut WF
AW: per Formel
Bernhard

Hallo WF,
auch Dir sage Dankeschön. Die Formellösung werde ich auch erst morgen testen können. Dann auch Dir eine Rückmeldung.
Gruss
Bernhard
Anzeige
AW: Bereich kopieren
11.09.2008 17:20:00
Bernhard
Hallo Jürgen,
Danke auch Dir. Konnte Deinen Code noch nicht ausprobieren, da jetzt anderweitig beschäftigt. Rückmeldung morgen.
Gruss
Bernhard
AW: Bereich kopieren
12.09.2008 11:33:25
Bernhard
Hallo Jürgen,
habe heute Deinen Code in meine Tabelle eingefügt, aber es tut sich nichts? Da meine VBA-Kenntnisse (noch) gering sind komme ich nicht auf den Fehler.
Danke aber trotzdem für Deine Mühe
Gruss
Bernhard
Anzeige
Ich habe so getestet!
12.09.2008 12:03:46
Backowe
Hi Bernhard,
ich habe eine Tabelle 1 und eine Tabelle2 angelegt. Der Code kommt in die Tabelle1, da hatte ich dein Beispiel hin kopiert. Jedes Mal, wenn in Spalte H ein Wert größer 0 eingegeben wird, wird automatisch der Bereich von A bis H in die Tabelle 2 kopiert, immer in den nächste leere Zeile in Tabelle 2. Das Marko wird nicht angestoßen, sondern startet automatisch!
Also nochmals testen! :)
Gruß Jürgen
Anzeige
AW: Wenn Wert in Zelle grösser 0, dann kopiere...
11.09.2008 13:35:00
Peter
Huhu,
oder so. Füg dir einen CommandButton auf Tabelle1 ein und weis dem Click-Ereignis diesen Code zu.
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim intWert As Integer, intSpalte As Integer, intZeile As Integer, intAnz As Integer
ActiveWorkbook.Worksheets("Tabelle2").Range("a1:A60000").ClearContents
intSpalte = 8
intZeile = 1
intAnz = WorksheetFunction.CountA(ActiveWorkbook.Worksheets("Tabelle1").Range("A2:A60000"))
Zae2 = 0
For Zae1 = 1 To intAnz
    intWert = ActiveWorkbook.Worksheets("Tabelle1").Cells(intZeile + Zae1, intSpalte)
    If intWert > 0 Then
        ActiveWorkbook.Worksheets("Tabelle1").Range(Cells(intZeile + Zae1, 1), Cells(intZeile + Zae1, 8)).Copy
        ActiveWorkbook.Worksheets("Tabelle2").Cells(intZeile + Zae2, 1).PasteSpecial
        Application.CutCopyMode = False
        Zae2 = Zae2 + 1
    End If
Next Zae1
Application.ScreenUpdating = True
End Sub
Gruß Henrik
AW: Wenn Wert in Zelle grösser 0, dann kopiere...
Bernhard

Hi Henrik,
bin gerade erst dazu gekommen Deinen Code zu testen. Klappt prima.
Herzlichen Dank
Gruss
Bernhard
per Formel
WF

Hi Bernhard,
schreib in A2 der Tabelle2 folgende Arrayformel:
{=WENN(ZÄHLENWENN(Tabelle1!$H:$H;">0")<ZEILE(A1);"";INDEX(Tabelle1!A:A; KKLEINSTE(WENN(Tabelle1!$H$2:$H$99>0;ZEILE($2:$99));ZEILE(A1)))) }
nach rechts und nach unten kopieren / Spalte D dann löschen
ARRAY-Formel {=geschweifte Klammern} nicht eingeben;
Abschluß der Formel mit gleichzeitig Strg / Shift / Enter; - das erzeugt sie.
Salut WF
AW: per Formel
Bernhard

Hallo WF,
auch Dir sage Dankeschön. Die Formellösung werde ich auch erst morgen testen können. Dann auch Dir eine Rückmeldung.
Gruss
Bernhard
Anzeige
AW: Wenn Wert in Zelle grösser 0, dann kopiere...
11.09.2008 16:52:00
Bernhard
Hi Henrik,
bin gerade erst dazu gekommen Deinen Code zu testen. Klappt prima.
Herzlichen Dank
Gruss
Bernhard
per Formel
11.09.2008 13:38:00
WF
Hi Bernhard,
schreib in A2 der Tabelle2 folgende Arrayformel:
{=WENN(ZÄHLENWENN(Tabelle1!$H:$H;">0")<ZEILE(A1);"";INDEX(Tabelle1!A:A; KKLEINSTE(WENN(Tabelle1!$H$2:$H$99>0;ZEILE($2:$99));ZEILE(A1)))) }
nach rechts und nach unten kopieren / Spalte D dann löschen
ARRAY-Formel {=geschweifte Klammern} nicht eingeben;
Abschluß der Formel mit gleichzeitig Strg / Shift / Enter; - das erzeugt sie.
Salut WF
Anzeige
AW: per Formel
11.09.2008 17:22:21
Bernhard
Hallo WF,
auch Dir sage Dankeschön. Die Formellösung werde ich auch erst morgen testen können. Dann auch Dir eine Rückmeldung.
Gruss
Bernhard
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Werte in Excel kopieren, wenn sie größer als null sind


Schritt-für-Schritt-Anleitung

  1. VBA-Code einfügen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen. Wähle die Tabelle aus, in der Du die Überprüfung durchführen möchtest (z.B. "Tabelle1").

  2. Worksheet_Change-Ereignis: Füge den folgenden Code in das Codefenster ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("H2:H" & Cells(Rows.Count, "H").End(xlUp).Row)) Is Nothing And Target.Count = 1 Then
           If Target > 0 Then
               Range(Cells(Target.Row, "A"), Cells(Target.Row, "C")).Copy _
                   Destination:=Sheets("Tabelle2").Range("A" & Sheets("Tabelle2").Cells(Rows.Count, "A").End(xlUp).Row + 1)
           End If
       End If
    End Sub
  3. Code testen: Gehe zurück zu Excel, gib einen Wert größer 0 in eine Zelle in Spalte H ein und überprüfe, ob die entsprechenden Werte aus Spalte A bis C in "Tabelle2" kopiert werden.


Häufige Fehler und Lösungen

  • Fehler: Der Code wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass Du den Code im richtigen Tabellenblatt eingefügt hast. Es sollte in "Tabelle1" sein, wenn Du die Werte dort eingibst.
  • Fehler: Nichts wird kopiert.

    • Lösung: Überprüfe, ob der eingegebene Wert tatsächlich größer als 0 ist. Der Code funktioniert nur, wenn der Wert in Spalte H größer 0 ist.

Alternative Methoden

  1. CommandButton hinzufügen: Du kannst auch einen Button hinzufügen, um den Kopiervorgang manuell auszulösen. Füge einen CommandButton in "Tabelle1" ein und verwende folgenden Code:

    Private Sub CommandButton1_Click()
       Application.ScreenUpdating = False
       Dim intWert As Integer, intZeile As Integer, intAnz As Integer, Zae2 As Integer
       intZeile = 1
       intAnz = WorksheetFunction.CountA(ActiveWorkbook.Worksheets("Tabelle1").Range("A2:A60000"))
       Zae2 = 0
       For Zae1 = 1 To intAnz
           intWert = ActiveWorkbook.Worksheets("Tabelle1").Cells(intZeile + Zae1, 8)
           If intWert > 0 Then
               ActiveWorkbook.Worksheets("Tabelle1").Range(Cells(intZeile + Zae1, 1), Cells(intZeile + Zae1, 8)).Copy
               ActiveWorkbook.Worksheets("Tabelle2").Cells(intZeile + Zae2, 1).PasteSpecial
               Zae2 = Zae2 + 1
           End If
       Next Zae1
       Application.ScreenUpdating = True
    End Sub
  2. Formel verwenden: Du kannst auch eine Formel verwenden, um die Werte anzuzeigen, die größer als 0 sind. Eine Beispiel-Arrayformel könnte so aussehen:

    =WENN(ZÄHLENWENN(Tabelle1!$H:$H;">0")<ZEILE(A1);"";INDEX(Tabelle1!A:A;KKLEINSTE(WENN(Tabelle1!$H$2:$H$99>0;ZEILE($2:$99));ZEILE(A1))))

    Vergiss nicht, die Formel mit STRG + UMSCHALT + ENTER abzuschließen.


Praktische Beispiele

  • Beispiel 1: Du hast eine Liste von Verkäufen in "Tabelle1". Wenn der Verkaufswert in Spalte H größer als 0 ist, wird die gesamte Zeile von A bis C und E bis H in "Tabelle2" kopiert.

  • Beispiel 2: Verwende die oben genannte Arrayformel in "Tabelle2", um nur die Zeilen anzuzeigen, die einen Wert größer als 0 in Spalte H haben, ohne VBA zu verwenden.


Tipps für Profis

  • Automatisierung: Nutze die Worksheet_Change-Ereignisse, um Prozesse zu automatisieren. Das spart Zeit und reduziert Fehler.

  • Datenvalidierung: Stelle sicher, dass die Eingabewerte in Spalte H durch eine Datenvalidierung überprüft werden, um sicherzustellen, dass nur numerische Werte eingegeben werden.

  • Debugging: Wenn etwas nicht funktioniert, füge MsgBox-Befehle in deinen Code ein, um den Status von Variablen während der Ausführung zu überprüfen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Code nur bei bestimmten Bedingungen ausgeführt wird? Du kannst zusätzliche Bedingungen in den If-Anweisungen hinzufügen, um die Ausführung des Codes zu steuern.

2. Was mache ich, wenn ich keine VBA-Kenntnisse habe? Falls Du mit VBA nicht vertraut bist, kannst Du auch die Formelmethode verwenden, um die Werte anzuzeigen, die größer als 0 sind.

3. Wie kann ich den Code anpassen, um andere Spalten zu kopieren? Ändere einfach die Bereiche im Range-Objekt entsprechend, um die gewünschten Spalten einzuschließen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige