online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon woher vom 28.09.2022, 18:09 Options

Lösung

Makro: Spalten kopieren

Hallo Helfer,

ich bekomme wöchentlich Dateien mit immer einem Tabellenblatt: KW1, KW2, KW3 etc,
dort sind in Zeile 2, ab Spalte C, die Spaltenüberschriften: Hb, Fb, Tt, Bb, Mg, etc.
Dieses Tabellenblatt verschiebe ich in eine bestehende Datei.
Dort gibt es die Tabellenblätter: Hb, Fb, TT, BB, Mg, etc.
Dann sollen alle Spalten ab C, aus dem Tab.blatt KW39, entsprechend der Überschrift in Zeile 2 in die gleichnamigen Tabellenblätter kopiert werden. Zu Beginn des Makros soll aber per InputBox einmal der Spaltenbuchstabe (ist für alle gleich) in den Zieltabellen abgefragt werden.

Ich hoffe ich habe mein Anliegen nachvollziehbar formuliert.
Schon mal vielen Dank im Voraus
mfg

Wolfgang


Antwort schreiben

Antwort 1 von coros vom 29.09.2022, 05:37 Options

Hallo Wolfgang,

ich hoffe, ich habe Deine Frage richtig verstanden. Mit nachfolgendem Makro wird zunächst ein Eingabefenster geöffnet, in das die Spaltenindexzahl für die Saplte, in der die kopierten Spalten eingefügt werden sollen, eingetragen werden muss. Danach wird im aktiven Blatt (in meinem Beispiel Blattname KW39) die Überschriften mit den Tabellenblattnamen in der Datei verglichen. Wenn eine Übereinstimmung gefunden wurde, wird die Spalte in das gefundene Tabellenblatt in die Spalte aus der Eingabe eingefügt.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Spalten_kopieren()
Dim intColumn           As Integer
Dim intSheets           As Integer

Dim varColumnEingabe    As Variant

varColumnEingabe = InputBox("Bitte geben Sie die Spalte ein, in das die Daten eingefügt werden sollen", "Spaltenabfrage...", 1)

If varColumnEingabe = False Or varColumnEingabe = "" Then Exit Sub

If Not IsNumeric(varColumnEingabe) Then
    MsgBox "Eingabe entspricht nicht der Gültigkeit. Bitte starten Sie die Funktion neu." & vbLf & vbLf _
            & "Vorgang wird abgebrochen...", vbInformation, "falsche Eingabe..."
    Exit Sub
End If

For intColumn = 3 To ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
    For intSheets = 1 To Sheets.Count
        If Sheets(intSheets).Name = ActiveSheet.Cells(1, intColumn) Then
            ActiveSheet.Columns(intColumn).Copy _
            Sheets(intSheets).Columns(CInt(varColumnEingabe))
        End If
    Next intSheets
Next intColumn

End Sub

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von woher vom 29.09.2022, 19:40 Options

Hallo Oliver,
dein "Vorwort" beschreibt nochmal kurz das was mein Anliegen ist. Das Makro wird also wohl tun was es soll.
Ich habe jetzt doch noch etwas Zeit und gerade das Makro getestet.
Erst war ich etwas erschreckt, das es nichts tut. Dann habe ich gesehen das Zeile 1, nicht Zeile 2 verglichen wird. das ist geändert, nun ist es super. Meine Maus freut sich mit, (die PC-Maus!), ich muss sie wieder ein bisschen weniger über den Tisch jagen.

Eine Kleinigkeit(?) hätte ich noch:
In einem Makro (von Hajos Excelseite) wird auch die Spalte abgefragt, dort aber ausdrücklich der Buchstabe:
Application.InputBox("Bitte geben Sie die Spalte als Buchstabe ein", _ "Spalte", StSpV, Type:=2)

Lässt sich das relativ einfach ändern, damit das auch hier so funktioniert?

Vielen Dank
mfg
Wolfgang

Antwort 3 von coros vom 29.09.2022, 20:02 Options

Hallo Wofgang,

was bringt Dir das für Vorteile?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von coros vom 29.09.2022, 20:21 OptionsLösung

Lösung
Hallo Wolfgang,

ich nochmal. Nachfolgend der geänderte Code.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Spalten_kopieren()
Dim intColumn           As Integer
Dim intSheets           As Integer

Dim strColumnEingabe    As String

strColumnEingabe = InputBox("Bitte geben Sie die Spalte ein, in das die Daten eingefügt werden sollen", "Spaltenabfrage...", "A")

If strColumnEingabe = "" Then Exit Sub

If IsNumeric(strColumnEingabe) Then
    MsgBox "Eingabe entspricht nicht der Gültigkeit. Bitte starten Sie die Funktion neu." & vbLf & vbLf _
            & "Vorgang wird abgebrochen...", vbInformation, "falsche Eingabe..."
    Exit Sub
End If

For intColumn = 3 To ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
    For intSheets = 1 To Sheets.Count
        If Sheets(intSheets).Name = ActiveSheet.Cells(1, intColumn) Then
            ActiveSheet.Columns(intColumn).Copy _
            Sheets(intSheets).Columns(CInt(Range(strColumnEingabe & 1).Column))
        End If
    Next intSheets
Next intColumn

End Sub

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von woher vom 30.09.2022, 13:19 Options

Hallo Oliver,
nochmal vielen Dank.
Die Bennenung der Spalten mit Buchstaben ist einfach das, was Excelnutzer gewohnt sind.
Für eine Zifferneingaben hätte ich sonst noch irgend ein Hilfskonstrukt gebraucht, das für Spaltenbuchstaben die richtige Ziffer erzeugt.
=SPALTE(INDIREKT(A1&1)). Dies z.B. steht in Zelle B1, bei Eingabe in Zelle A1 z.B." IV" ist das Ergebnis 256.
mfg
Wolfgang

Ähnliche Themen

Makro kopieren
Jeremy  04.06.2009 - 203 Hits - 7 Antworten

Filterergebnis mit einem Makro kopieren
Vronilein  27.06.2009 - 238 Hits - 3 Antworten

Makro Leere Spalten löschen ab Zeile 2
Molares  04.09.2009 - 366 Hits - 3 Antworten

per Makro Spalten bearbeiten
woher  27.06.2010 - 179 Hits - 2 Antworten

Makro: Spalten gemäß Mustertabelle verschieben
woher  09.09.2010 - 55 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026