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

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

我甚至不确定这是否可行,谷歌也没有给我提供任何结果。我有一个表格,其中包含 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 行,等等。

答案1

一步步:

  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
    
  3. 关闭 VBE

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

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

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

在此处输入图片描述

相关内容