在 VBA Excel 中复制和粘贴循环以获得多个输出
Copying and pasting loop in VBA Excel for multiple outputs
所以我有以下 excel 选项卡:
Code 1, Code 2, Code 3, LI, 2015, 2016, 2017, 2018, 2019, 2015 等输出
对于 2015 年,我在“2015”选项卡中有一个 table,其中包含 10 行 3 个代码及其各自的 % 值的列表。例如
ref name yr code 1 % code 2 % code 3 %
12345 NAME 2015 AB 50% CD 37% EF 13%
78901 NAME 2015 AX 54% OD 30% NG 6%
26572 NAME 2015 AE 60% CD 27% PF 13%
我需要将代码 1 'AB' 和 % '50%' 放入标签代码 1 中的单元格 B5 和 B6 中。对于代码 2 和 3 'CS' 和 '37% ' 在标签代码 2 等的 B5 和 B6 中。这些然后在单元格 F5:F183 中的 LI 标签中产生一个模式,然后需要为每个参考复制并粘贴到每个参考的 2015 标签的输出中。然后循环每个引用并重复粘贴输出。
到目前为止,我有这个用于复制和粘贴部分:
Sub Copy_and_paste2()
Dim rng2 As Range, cell2 As Range
Dim i As Integer
i = 3
Set rng2 = Worksheets("2015").Range("D10:D21")
For Each cell2 In rng2
Worksheets("Code 1").Range("B5").Value = cell2.Value
Worksheets("2015 output").Range("A" & i & ":AW" & i).Value = Worksheets("LI").Range("F5:F183").Value
i = i + 1
Next cell2
End Sub
在这一点上,我只是想让它适用于没有 % 的第一个代码,然后我可以尝试添加后面的代码,但这个也不起作用。有什么建议吗?
你的问题有点难读,所以我根据我认为你的代码中最明显的问题写了一个答案。如果我误读了您的查询或完全错过了要点,我们深表歉意..
您似乎正在尝试复制
的内容
Worksheets("LI").Range("F5:F183")
(179 个单元格)
到
Worksheets("2015 output").Range("A" & i & ":AW" & i)
(49 个单元格)
忽略您无法将 179 个条目复制到 49 个条目这一事实(它只会复制前 49 个条目)- 我认为您可能看到第一个条目在所有 49 个单元格中重复出现?
这是因为您没有调换范围(在本例中,从一列切换到一行)。
尝试像这样转置:
Worksheets("2015 output").Range("A" & i & ":AW" & i).Value = _
WorksheetFunction.Transpose(Worksheets("LI").Range("F5:F57").Value)
不过请记住,我已将源范围更改为仅前 49 个单元格。你不必这样做,但我会突出显示它以防你不知道正在发生这种情况。
所以我有以下 excel 选项卡: Code 1, Code 2, Code 3, LI, 2015, 2016, 2017, 2018, 2019, 2015 等输出
对于 2015 年,我在“2015”选项卡中有一个 table,其中包含 10 行 3 个代码及其各自的 % 值的列表。例如
ref name yr code 1 % code 2 % code 3 %
12345 NAME 2015 AB 50% CD 37% EF 13%
78901 NAME 2015 AX 54% OD 30% NG 6%
26572 NAME 2015 AE 60% CD 27% PF 13%
我需要将代码 1 'AB' 和 % '50%' 放入标签代码 1 中的单元格 B5 和 B6 中。对于代码 2 和 3 'CS' 和 '37% ' 在标签代码 2 等的 B5 和 B6 中。这些然后在单元格 F5:F183 中的 LI 标签中产生一个模式,然后需要为每个参考复制并粘贴到每个参考的 2015 标签的输出中。然后循环每个引用并重复粘贴输出。
到目前为止,我有这个用于复制和粘贴部分:
Sub Copy_and_paste2()
Dim rng2 As Range, cell2 As Range
Dim i As Integer
i = 3
Set rng2 = Worksheets("2015").Range("D10:D21")
For Each cell2 In rng2
Worksheets("Code 1").Range("B5").Value = cell2.Value
Worksheets("2015 output").Range("A" & i & ":AW" & i).Value = Worksheets("LI").Range("F5:F183").Value
i = i + 1
Next cell2
End Sub
在这一点上,我只是想让它适用于没有 % 的第一个代码,然后我可以尝试添加后面的代码,但这个也不起作用。有什么建议吗?
你的问题有点难读,所以我根据我认为你的代码中最明显的问题写了一个答案。如果我误读了您的查询或完全错过了要点,我们深表歉意..
您似乎正在尝试复制
的内容Worksheets("LI").Range("F5:F183")
(179 个单元格)
到
Worksheets("2015 output").Range("A" & i & ":AW" & i)
(49 个单元格)
忽略您无法将 179 个条目复制到 49 个条目这一事实(它只会复制前 49 个条目)- 我认为您可能看到第一个条目在所有 49 个单元格中重复出现?
这是因为您没有调换范围(在本例中,从一列切换到一行)。
尝试像这样转置:
Worksheets("2015 output").Range("A" & i & ":AW" & i).Value = _
WorksheetFunction.Transpose(Worksheets("LI").Range("F5:F57").Value)
不过请记住,我已将源范围更改为仅前 49 个单元格。你不必这样做,但我会突出显示它以防你不知道正在发生这种情况。