首先我要说的是,我没有任何 VBA 经验,但我需要快速对这些数据进行排序。我需要进行 Sage 300 发票导入。我可以在第二次进行数据排序后通过公式对这些数据进行排序。问题的根源在于,这些数据实际上需要每行放入两行,但 excel 会跳过行。
我有一段可以用于我的一部分代码,但是运行它时出现外部引用错误。
ActiveCell.EntireRow.Select
Selection.Copy
Selection.Insert Shift:=xlDown
有什么提示或提示吗?如果它只是将该行精确复制到其下方的行,直到碰到空行,我会很高兴。
我阅读了排序注释并且我突然意识到我可以重新复制数据并按唯一值排序,以便所有内容都按预期出现 - 但无论如何我还是想知道 VBA 代码。
答案1
Sub copyRowToBelow()
Dim rng As Range
Set rng = Range("A1") ' <~~ Change this
Do While (rng.Value <> "")
' Insert a row below the current one
rng.Offset(1).Insert
' Copy the current row and paste it into the row we just inserted
rng.EntireRow.Copy rng.Offset(1)
' Set the range declaration for 2 rows below the current one
Set rng = rng.Offset(2)
Loop
End Sub
可以在代码中声明标记的行(“更改此项”),或者Set rng = ActiveCell
如果您希望它在运行宏时从用户正在处理的单元格中运行,则可以将其交换。
代码不需要注释,注释纯粹是为了帮助您了解有关 VBA 的更多信息。
答案2
选择要开始复制的单元格并运行此宏
Dim myCell
Set myCell = ActiveCell
While ActiveCell.Value <> ""
Rows(ActiveCell.Row).Select
Selection.Copy
Selection.Insert Shift:=xlDown
myCell.Offset(1, 0).Select
Set myCell = ActiveCell
Wend