VBA代码将值从一个单元格复制到特定列

Posted

技术标签:

【中文标题】VBA代码将值从一个单元格复制到特定列【英文标题】:VBA code to copy value from one cell to specific column 【发布时间】:2016-04-20 17:52:53 【问题描述】:

我是 VBA 新手,需要以下方面的帮助:

    从工作表“WORKING”中的单元格 B3、B4、B5、B6、B7 复制值 将单元格的值分别粘贴到工作表“跟踪”中的范围(F2,lastrow),(G2,lastrow),(H2,lastrow),(I2,lastrow),(J2,lastrow)

*工作表“TRACKING”中的“lastrow”总是会有所不同

*单元格 B3、B4、B5、B6、B7 总是有不同的值

例如

工作表“工作”

B3 is A1234
B4 is A
B5 is B
B6 is 1
B7 is XX

表格“跟踪” lastrow 使用代码lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row 确定为 4

所需的输出如下所示

           F         G         H         I         J
(Row 1)
(row 2)   A1234      A         B         1         XX
(row 3)   A1234      A         B         1         XX
(row 4)   A1234      A         B         1         XX

希望有人能帮帮我!!谢谢!!

找到解决方案

Sub data_transpose
Dim i As Integer
Dim lastrow As Long
Dim copyRange As Range
Dim sh As Worksheet
Set copyRng = Worksheets("WORKING").Range("B3:B7")
Set sh = Worksheets("TRACKING")

lastrow = sh.Range("A2", sh.Range("A2").End(xlDown)).Rows.Count + 1

For i = 2 To lastrow
copyRng.Copy
sh.Cells(i, 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,    
_SkipBlanks:=False, Transpose:=True
Next i

End Sub

【问题讨论】:

你试过录制宏吗?这将为您提供一个很好的起点 尝试记录 marco 但没有达到我想要的效果...我正在玩数组(来自此处找到的答案)但它没有达到我想要的效果.. 【参考方案1】:

这可能对你有用

for jj=1 to #number_of_lines_you_want
for j = 6 to 10
   for i = 3 to worksheets("WORKING").cells(2,2).End(xlDown).Row
        lastrow = worksheets("TRACKING").cells(2,j).End(xlDown).Row
        worksheets("TRACKING").cells(i,j) = worksheets("WORKING").cells(i,2).value
   next i
next j
next jj

end(xlDown).row 将为您提供最后一个条目的行。

这个怎么样?

for i = 3 to 7
worksheets("WORKING").range("B3:B7").Copy
Worksheets("TRACKING").cells(i,6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True

【讨论】:

嗨嗨!我厌倦了代码,但它似乎只添加了一行。我编辑了我的问题,也许它可以让我更清楚我想要实现的目标 你知道要添加多少行到“TRACKING”吗? 嗨 faurillou,你的方法让我想到了转置,向下移动,我找到了一个可行的解决方案!【参考方案2】:

以下是帮助您入门的一种选择:

Sub CopyData()
    Dim copyRng As Range, cl As Range, col As Integer, lastRow As Integer

    Set copyRng = Worksheets("Working").Range("B3:B7")
    col = 6 ' Denotes column F

    With Worksheets("Tracking")
        lastRow = .Cells(Rows.Count, "F").End(xlUp).Row

        For Each cl In copyRng
            .Range(.Cells(2, col), .Cells(lastRow, col)) = cl
            col = col + 1
        Next cl
    End With
End Sub

【讨论】:

嘿亚历克斯!!!我试过你的代码,但它似乎只在最后一行添加..你的想法让我想到通过设置 dim row as integer 将它设置为一个循环,然后在 for row = 1 to lastrow For Each cl In copyRng targetRng.offset(0, col) = cl col = col + 1 Next cl next row 下太糟糕了它不起作用所以意味着那里我的代码有问题..你能帮忙吗? @IsabelLim - 查看更新的代码。我认为这可以满足您的需求。 嘿,alex 非常感谢您的帮助!你的方法让我想到了vba基础!哈哈,我找到了一个可行的解决方案来满足我的需求.. 绝对不优雅,但仍然是我想要的 太好了。听起来您已经提高了 VBA 知识,无论您是否有优雅的解决方案,这都是一个很好的结果!

以上是关于VBA代码将值从一个单元格复制到特定列的主要内容,如果未能解决你的问题,请参考以下文章

将值从ListBox复制到工作表单元格

Excel VBA 将值从一张表移动到另一张表

pandas Dataframe,将特定值从一个单元格移动到另一个单元格

EXCEL VBA为多个变量赋值

在 C# 中将 Excel 列(或单元格)格式化为文本?

用于比较具有包含日期​​的单元格的列并将特定文本粘贴到另一列的 Vba 代码