HI所以我有一组我要复制的数据。基本上我想创建一个if函数。如果我们在列B中搜索空行并且它是空白的,则循环到下一行,并继续直到第一个非空行。如果我们在列c中的所有空行中点击非空白副本。
Sub NotReadys()
' NotReadys Macro'
Dim Z As Integer 'Supplier Beginning Row'
Dim X As Integer 'Next Non Blank row'
Dim Q As Integer '# of suppliers'
Dim Y As Integer 'Paste Row'
Y = 6
'For T = 1 To 195
ActiveWindow.SmallScroll Down:=-33
Range("B" & Y).Select
Selection.Copy
Range("E" & Y).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("F" & Y).Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=TEXTJOIN(CHAR(10),FALSE,RC[-3]:R[30]C[-3])"
Range("F" & Y).Select
ActiveWindow.SmallScroll Down:=-30
Range("F" & Y).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Y = Y + 1
Next T
End Sub
答案 0 :(得分:0)
我很难理解您的数据结构,但使用For Each x In Selection
可能会对您有所帮助。我假设您的数据至少与以下类似,其中供应商名称在A列中,而PO在B列中
| A | B | C | D | -----|-------|-------|-------|-------| 1 | s1 | PO1 | | | -----|-------|-------|-------|-------| 2 | s2 | PO2 | | | -----|-------|-------|-------|-------| 3 | s3 | | | | -----|-------|-------|-------|-------| 4 | s4 | PO3 | | | -----|-------|-------|-------|-------|
此代码会将任何供应商和采购订单(其中采购订单不为空白)复制到C和D列:
outRow = 1 ' Set this to the index of the first row you want to output to
' Run through each cell in Selection, left to right, top to bottom
For Each selCell In Selection
' Check for non-blank, but only if we're looking at column 2 (B)
If selCell.Column = 2 & selCell <> "" then
' Store the selected Row and Column
sRow = selCell.Row
sCol = selCell.Column
' Has the effect of prefixing ActiveSheet to any values that start with "."
With ActiveSheet
' Copy value from cols 1 and 2 (A & B) to col 3 and 4 (C & D)
.Cells(outRow, 3).Value = .Cells(sRow, sCol - 1).Value
.Cells(outRow, 4).Value = selCell.Value
End With
outRow = outRow +1 ' Moves to next output row
End If
Next
在我的示例中,假设您在运行函数之前选择了A1:B4,您将获得以下输出。
| A | B | C | D | -----|-------|-------|-------|-------| 1 | s1 | PO1 | s1 | PO1 | -----|-------|-------|-------|-------| 2 | s2 | PO2 | s2 | PO2 | -----|-------|-------|-------|-------| 3 | s3 | | s4 | PO3 | -----|-------|-------|-------|-------| 4 | s4 | PO3 | | | -----|-------|-------|-------|-------|
我猜你正在使用宏录制选项来制作你拥有的代码;这是学习VBA如何工作的好方法(我们大多数人在某些时候都这样做了),但是没有产生好的代码。 Excel中的内置文档实际上非常好,当你遇到录音机的限制时值得一看。
编辑:我越看你的问题,我就越不确定你所问的是什么,但希望上面至少会把你推向正确的方向。 的