如何制作一个按钮,将一个表中的所有值发送到另一个表中的一行

Dav*_*ave 1 microsoft-excel

我什至不确定这是否可能,而且 Google 没有为我提供任何信息。我有一个包含 C6:F12,G6:G8 数据的表格。我想插入一个按钮,将所有这些数据发送到另一个表的单个新行中。该表将位于工作表的更下方。根据我插入的图形的大小,第一组数据将在 50A:50AD 左右。

来自 G7 和 G8 的数据将合并并放置在 50A 中。然后 C6:F6 将进入 50B:50E,C7:F7 将进入 50F:50I,C8:F8 将进入 50J:50m,C9:F9 将进入 50N:50Q,C10:F10 将进入 50R:50U , C11:F11 将进入 50V:50Y,C12:F12 将进入 50Z:50AC,G6 将进入 50AD。

每次按下按钮时都会创建一个新行,因此第二组数据将在相同的列中,但在第 51 行,第 52 行中的第三组,依此类推。

tey*_*lyn 6

一步步:

  1. 在您的工作簿中,点击Alt-F11打开 Visual Basic 编辑器 (VBE)

  2. 单击菜单中的插入 > 模块并将以下内容粘贴到大代码窗口中

    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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 关闭 VBE

  4. 在您的工作表中,插入一个按钮或一个形状。右键单击该形状并选择“分配宏”。选择名为“copyRow”的宏

  5. 在 A 列中,在单元格中放置一些文本以标记数据表的开头。然后单击 按钮,表的当前值和第 6 行到第 12 行的范围将被复制到下一个空行。

此方案基于这样的假设:每一个新的数据行在 G7 和 G8 中都有一些值,因此下表中的每一行在 A 列中都有一个值。

在此处输入图片说明