【发布时间】:2015-10-17 21:52:39
【问题描述】:
我很难将行从一个循环复制到一个循环。目标循环是所有空白单元格。我已经坚持了3天了,我觉得很没有生产力。我错过了什么?
Sub Testloop()
Dim a As Range, b As Range, d As Range
Sheets("SAP Output DATA").Select
Range(Cells(2, "A"), Cells(Rows.Count, "A").End(xlUp)).Select
Selection.SpecialCells(xlCellTypeBlanks).Offset(0, 4).Select
Set d = Selection
Sheets("Input DATA").Select
Range("B2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Set a = Selection
For Each b In a.Rows
b.Copy
For Each row In d.Rows
b.PasteSpecial
Next row
Next b
End Sub
它复制了数据,但它复制的数据是第 2 行的所有原始数据,下一个空白单元格不包含 Input DATA 表中的下一行数据。我如何遍历行并将它们粘贴到空白单元格中?
看图片:
1。 http://i.stack.imgur.com/Jd95G.png
2。 http://i.stack.imgur.com/444RO.png
经过漫长的一天,我仍然无法解决它。这是我认为永远不会得到它的接近。
Sub Testshttestonemoretime()
Dim a As Range, b As Range, d As Range, f As Range
Dim i As Long, r As Range, coltoSearch As String
Dim sht As Worksheet
Set sht = ThisWorkbook.ActiveSheet
Sheets("Input DATA").Select
Range("B2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Set a = Selection
Sheets("SAP Output DATA").Select
For Each b In a.Rows
MsgBox b.Address
For Each Address In b
coltoSearch = "A"
For i = 2 To Range(coltoSearch & Rows.Count).End(xlUp).row
Set r = Range(coltoSearch & i)
If Len(r.Value) = 0 Then
MsgBox "No Value, in " & r.Address
b.Copy Destination:=Cells(i, 5)
End If
Next i
Next Address
Next b
End Sub
Excel工作表下载有问题:
https://drive.google.com/file/d/0B-ZY6BZH9zh5WGpuY0RPZk5Mb2c/view?usp=sharing
该按钮在 sap 数据表上称为“将文本复制到颜色”
到目前为止,我唯一能以一种有效的方式工作,主要是。我不知道为什么有时会失败;这是:
Sub WorkingLoop()
Dim a As Range, b As Range, d As Range, f As Range, e As Range
Dim i As Long, r As Range, coltoSearch As String
Dim sht As Worksheet
Set sht = ThisWorkbook.Worksheets("Input DATA")
Sheets("Input DATA").Select
Range("B2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Set a = Selection
Sheets("SAP Output DATA").Select
For Each b In a.Rows
'MsgBox b.Address
Set f = sht.Range(b.Address)
f.Copy
coltoSearch = "A"
For i = 2 To Range(coltoSearch & Rows.Count).End(xlUp).row
Set r = Range(coltoSearch & i)
If Len(r.Value) = 0 Then
'MsgBox "No Value, in " & r.Address
Set e = Range(r.Address)
For Each cell In e
e.PasteSpecial
Next cell
End If
Next i
e.PasteSpecial
Next b
End Sub
【问题讨论】:
-
不太确定您要做什么。是不是:将“SAP 输出数据”第 2 行的所有数据复制到“输入数据”表的底部,然后对空白单元格执行(或不执行)某些操作?
-
我删除了多余的代码。对不起,你是对的。我想将每个单独的行从一个范围复制到另一个范围,并且在目标范围(空白)中将按源范围的顺序填充。
-
仍然不太明白 - 例如,“SAP 输出数据”上的数据涵盖第 1 到 15 行。“输入数据”表上有数据 - 数据涵盖第 1 到第 1 行3,然后有 3 个空白列,然后是几行数据,然后是空白行 - 您希望将“SAP 输出数据”中的数据粘贴到空白行 1 到 3,然后将其余部分粘贴到其他空白行中?如果是这种情况 - 首先对“输入数据”进行排序不是更好吗,这会将所有数据置于顶部,然后粘贴到其下方?
-
有没有办法不使用选择复制和粘贴?