我甚至不确定这是否可行,谷歌也没有给我提供任何结果。我有一个表格,其中包含 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
一步步:
在您的工作簿中,点击Alt-F11打开 Visual Basic 编辑器 (VBE)
从菜单中单击“插入”>“模块”,然后将以下内容粘贴到大代码窗口中
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
关闭 VBE
在工作表中,插入一个按钮或形状。右键单击形状并选择“分配宏”。选择名为“copyRow”的宏
在 A 列中,在单元格中放置一些文本以标记数据表的开始。然后单击按钮,表格的当前值和第 6 行至第 12 行的范围将被复制到下一个空行中。
此场景基于这样的假设:每一行新数据在 G7 和 G8 中都会有一些值,因此下表中的每一行在 A 列中都会有一个值。