So erstellen Sie eine Schaltfläche, mit der alle Werte aus einer Tabelle in eine Zeile in einer anderen Tabelle gesendet werden

1

Ich bin mir nicht mal sicher, ob dies möglich ist, und Google hat nichts für mich aufgedeckt. Ich habe eine Tabelle mit Daten in C6: F12, G6: G8. Ich möchte eine Schaltfläche einfügen, die alle diese Daten in eine einzelne NEUE Zeile einer anderen Tabelle sendet. Diese Tabelle befindet sich weiter unten im Arbeitsblatt. Abhängig von der Größe der Diagramme, die ich einfüge, beträgt der erste Datensatz ca. 50A: 50AD.

Daten von G7 und G8 würden kombiniert und in 50A platziert. Dann würde C6: F6 in 50B: 50E gehen, C7: F7 würde in 50F: 50I gehen, C8: F8 würde in 50J: 50m gehen, C9: F9 würde in 50N: 50Q gehen, C10: F10 würde in 50R: 50U gehen , C11: F11 würde in 50V: 50Y gehen, C12: F12 würde in 50Z: 50AC gehen und G6 würde in 50AD gehen.

Bei jedem Drücken der Taste wird eine neue Zeile erstellt, sodass sich der zweite Datensatz in denselben Spalten befindet, jedoch in Zeile 51, der dritte in Zeile 52 usw.

Dave
quelle
Wo ist der andere Tisch? Können Sie bitte angeben, wohin die einzelnen Zellenwerte gehen sollen? Sie möchten aus zwei verschiedenen Bereichen kopieren, die jeweils mehrere Zeilen enthalten. Sie möchten Daten in einer einzigen Zeile erstellen. Wo ist diese Reihe und wohin geht B2? Wohin geht B3? Wohin geht B4? usw. Sie müssen eine logische Zuordnung zwischen Quelle und Ziel erstellen, damit diese in VBA eingefügt werden kann.
Teylyn
@teylyn - Ich habe meinen ursprünglichen Beitrag mit genaueren Informationen aktualisiert. Außerdem haben sich einige meiner Zellenpositionen geändert, aber sie befinden sich jetzt in ihrer endgültigen Position.
Dave

Antworten:

5

Schritt für Schritt:

  1. Drücken Sie in Ihrer Arbeitsmappe Alt- F11, um den Visual Basic-Editor (VBE) zu öffnen.

  2. Klicken Sie im Menü auf Einfügen> Modul und fügen Sie Folgendes in das große Codefenster ein

    Option Explicit
    
    Sub copyRow()
    Dim ws As Worksheet
    Dim lRow As Long
    
    ' define which worksheet to work on, i.e. replace Sheet1 with the name of your sheet
    Set ws = ActiveWorkbook.Sheets("Sheet1")
    
    ' determine the last row with content in column A and add one
    lRow = ws.Cells(Rows.Count, "A").End(xlUp).Row + 1
    
    ' combine G7 and G8 and copy into column A, next empty row
    ws.Range("A" & lRow) = ws.[G7] & " " & ws.[G8]
    ' copy the other cells into their ranges
    ws.Range("C6:F6").Copy ws.Range("B" & lRow)
    ws.Range("C7:F7").Copy ws.Range("F" & lRow)
    ws.Range("C8:F8").Copy ws.Range("J" & lRow)
    ws.Range("C9:F9").Copy ws.Range("N" & lRow)
    ws.Range("C10:F10").Copy ws.Range("R" & lRow)
    ws.Range("C11:F11").Copy ws.Range("V" & lRow)
    ws.Range("C12:F12").Copy ws.Range("Z" & lRow)
    ws.Range("G6").Copy ws.Range("AD" & lRow)
    ws.[A1].Select
    End Sub
    
  3. Schließen Sie die VBE

  4. Fügen Sie in Ihr Blatt eine Schaltfläche oder eine Form ein. Klicken Sie mit der rechten Maustaste auf die Form und wählen Sie "Makro zuweisen". Wählen Sie das Makro "copyRow"

  5. Platzieren Sie in Spalte A Text in einer Zelle, um den Anfang Ihrer Datentabelle zu markieren. Klicken Sie dann auf die Schaltfläche und die aktuellen Werte der Tabelle und der Bereiche in den Zeilen 6 bis 12 werden in die nächste leere Zeile kopiert.

Dieses Szenario basiert auf der Annahme, dass jede neue Datenzeile in G7 und G8 einen Wert hat, sodass jede Zeile in der folgenden Tabelle einen Wert in Spalte A hat.

Bildbeschreibung hier eingeben

Teylyn
quelle