Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Spalten auf Inhalt prüfen

Spalten auf Inhalt prüfen
11.01.2017 15:00:41
Tim
Hallo Zusammen,
ich bin im Thema VBA noch ein relativer Anfänger. Ich möchte mittels Button die Spalten in Tabellenblatt 1 nacheinander auf Inhalt prüfen. Ist z.B. Text in Spalte A, so springe in Spalte B, ist dort auch Inhalt, springe in Spalte C usw.
Ist dann in einer Spalte kein Inhalt, so kopiere den Bereich A2:A50 aus Tabellenblatt 2 in die freie Spalte.
Bereits vielen Dank für eure Hilfe!!
Viele Grüße
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten auf Inhalt prüfen
11.01.2017 16:22:11
UweD
Hallo
das musst du nicht einzeln prüfen.
Private Sub TT()
    Dim CC As Integer, RNG As Range
    
    Set RNG = Sheets("Tabelle2").Range("A2:A50")
    
    '1. freie Spalte des gesamten Blattes 
    CC = Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeLastCell).Column + 1
    
    'Kopieren 
    RNG.Copy Destination:=Sheets("Tabelle1").Cells(2, CC)
End Sub

LG UweD
Anzeige
AW: Spalten auf Inhalt prüfen
12.01.2017 08:00:27
Tim
Hallo UweD,
vielen Dank für deine Hilfe! Funktioniert auch einwandfrei!
Allerdings habe ich in Tabelle 1 nun Formeln stehen, die aktiviert werden, sobald sich Inhalt in bestimmten Zellen befindet. Durch den Quellcode von dir wird der Inhalt aus Tabelle 1 leider nur immer eine Spalte weiter eingetragen. Werden die Formeln von Excel als Inhalt aufgefasst bei der Überprüfung? und lässt sich das Umgehen?
Und der kopierte Text aus Tabelle 2 wird immer in Zeile 2 von Tabelle 1 eingefügt. Lässt sich der genaue Bereich auch ansteuern?
LG und nochmals vielen Dank!
Anzeige
AW: Spalten auf Inhalt prüfen
12.01.2017 08:45:12
UweD
Hallo nochmal
bei diesem Verfahren ist es egal, ob Werte ,Text oder Formeln enthalten sind.
Lade doch mal eine Musterdatei hoch.
LG UweD


Tipp
Wenn du mit antworten noch nicht zufrieden bist, solltest du den entsprechenden Haken setzen, dadurch wird der Beitrag als "OFFEN" gekennzeichnet.
Anzeige
AW: Spalten auf Inhalt prüfen
12.01.2017 09:21:05
Tim
Hallo UweD,
anbei nun eine Beispieldatei (https://www.herber.de/bbs/user/110486.xlsm). Dabei soll die tägliche Anzahl an verkauften Getränken (Tabelle 2) in Tabelle 1 kopiert werden, sodass dann daraus die Tageseinnahmen errechnet werden. Allerdings werden die Daten aus Tabelle 2 immer erst an die Stelle kopiert, an der keine Formeln mehr stehen (hier Spalte U).
Vielleicht hast du dafür auch noch eine clevere Lösung. Oder ich habe etwas falsch gemacht - auch gut möglich.
Vielen Dank und LG
Tim
Anzeige
AW: Spalten auf Inhalt prüfen
12.01.2017 09:33:23
UweD
Hallo
so wie ich das sehe, kann die 3. Zeile zur Ermittlung der letzten Spalte ermittelt werden.
Dann so..
Sub Datenkopieren()
    Dim ZE As Integer, CC As Integer, RNG As Range
    
    Set RNG = Sheets("Verkaufszahlen").Range("C2:C7")
    ZE = 3 'Zeile, zur Ermittlung der letzten belegten Spalte 
    
    With Sheets("Übersicht")
        '1. freie Spalte des gesamten Blattes 
        CC = .Cells(ZE, .Columns.Count).End(xlToLeft).Column + 1
    
        'Kopieren 
        RNG.Copy Destination:=.Cells(3, CC)
    End With
End Sub

LG UweD
Anzeige
AW: Spalten auf Inhalt prüfen
12.01.2017 09:40:04
Tim
Das funktioniert hervorragend! Ganz lieben Dank!
AW: gern geschehen owt
12.01.2017 09:44:27
UweD
;
Anzeige
Anzeige

Infobox / Tutorial

Spalten auf Inhalt prüfen in Excel


Schritt-für-Schritt-Anleitung

Um die Spalten in Excel auf Inhalt zu überprüfen und gegebenenfalls Daten zu kopieren, kannst du den folgenden VBA-Code verwenden. Dieser Code prüft die Spalten in "Tabelle1" und kopiert den Bereich "A2:A50" von "Tabelle2" in die erste leere Spalte in "Tabelle1".

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Private Sub TT()
    Dim CC As Integer, RNG As Range

    Set RNG = Sheets("Tabelle2").Range("A2:A50")

    ' 1. freie Spalte des gesamten Blattes
    CC = Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeLastCell).Column + 1

    ' Kopieren
    RNG.Copy Destination:=Sheets("Tabelle1").Cells(2, CC)
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Füge einen Button hinzu und weise diesen das Makro "TT" zu.

Häufige Fehler und Lösungen

Problem: Der kopierte Inhalt wird immer in die gleiche Zeile eingefügt.

  • Lösung: Stelle sicher, dass die Zielzeile im VBA-Code korrekt angegeben ist. Wenn du den Inhalt in eine bestimmte Zeile einfügen möchtest, passe die Zeilennummer in Cells(2, CC) an.

Problem: Formeln werden als Inhalt erkannt und erhöhen die Zielspalte.

  • Lösung: Ändere die Methode zur Ermittlung der letzten Spalte. Nutze .End(xlToLeft) in Verbindung mit einer bestimmten Zeile zur Bestimmung der letzten Spalte.

Alternative Methoden

Eine alternative Methode besteht darin, die Daten manuell zu kopieren. Du kannst die Spalten in "Tabelle1" einfach markieren und dann den Bereich "A2:A50" aus "Tabelle2" kopieren, ohne VBA zu verwenden. Dies ist jedoch weniger effizient, wenn du oft Daten übertragen musst.


Praktische Beispiele

Hier ist ein Beispiel, wie der angepasste VBA-Code aussehen könnte, um die letzte belegte Zeile zu ermitteln:

Sub Datenkopieren()
    Dim ZE As Integer, CC As Integer, RNG As Range

    Set RNG = Sheets("Verkaufszahlen").Range("C2:C7")
    ZE = 3 ' Zeile, zur Ermittlung der letzten belegten Spalte

    With Sheets("Übersicht")
        ' 1. freie Spalte des gesamten Blattes
        CC = .Cells(ZE, .Columns.Count).End(xlToLeft).Column + 1

        ' Kopieren
        RNG.Copy Destination:=.Cells(3, CC)
    End With
End Sub

Dieser Code sorgt dafür, dass die Daten immer in die nächste freie Spalte kopiert werden, unabhängig von Formeln oder Inhalten in anderen Spalten.


Tipps für Profis

  • Nutze Application.ScreenUpdating = False zu Beginn deines Makros, um die Leistung zu verbessern, und setze es am Ende wieder auf True.
  • Wenn du oft mit VBA arbeitest, solltest du dir eine Sammlung nützlicher Codes erstellen, um Zeit zu sparen.
  • Überlege, Fehlerbehandlung in deinen VBA-Code einzufügen, um unerwartete Probleme elegant zu lösen.

FAQ: Häufige Fragen

1. Frage
Kann ich den Code auch in Excel 2010 verwenden?
Ja, der Code funktioniert in Excel 2010 und neueren Versionen ohne Probleme.

2. Frage
Wie kann ich den kopierten Bereich anpassen?
Ändere einfach die Range-Angabe im Code, z.B. Range("A2:A50") zu einer anderen gewünschten Range.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige