我需要一个 Excel 宏来连接每行的七列数据,直到到达数据的末尾。例如,如果我有这样的公式:
=A1&B1&C1&D1&E1&F1&G1
如何编写宏,以便它以这样的顺序递增到文件末尾的每一行?
=A1&B1&C1&D1&E1&F1&G1
=A2&B2&C2&D2&E2&F2&G2
=A3&B3&C3&D3&E3&F3&G3
我需要一个 Excel 宏来连接每行的七列数据,直到到达数据的末尾。例如,如果我有这样的公式:
=A1&B1&C1&D1&E1&F1&G1
如何编写宏,以便它以这样的顺序递增到文件末尾的每一行?
=A1&B1&C1&D1&E1&F1&G1
=A2&B2&C2&D2&E2&F2&G2
=A3&B3&C3&D3&E3&F3&G3
有这么多答案,我和 assylias 强调的重点已经浪费了:)
但是,如果您仍然想要 VBA 答案。使用此方法。这比或快得多。Looping
Autofill
Option Explicit
Sub Sample()
Dim LastRow As Long
Dim Ws As Worksheet
Set Ws = Sheets("Sheet1")
LastRow = Ws.Range("A" & Ws.Rows.Count).End(xlUp).Row
'~~> If your range doesn't have a header
Ws.Range("H1:H" & LastRow).Formula = "=A1&B1&C1&D1&E1&F1&G1"
'~~> If it does then
Ws.Range("H2:H" & LastRow).Formula = "=A2&B2&C2&D2&E2&F2&G2"
End Sub
如果您有 1000 行,那么您可能需要在运行代码之前关闭Screenupdating
并更改Calculation
为手动,然后在代码末尾重置它们。
我认为最简单的方法就是按照 assylias 的说法填写,但如果你想使用 VBA:
Selection.AutoFill Destination:=Range("Your Fill Range"), Type:=xlFillDefault
应该复制到其他行。
我同意 100% 的评论和其他答案,为什么你需要 VBA 来做到这一点,但只是为了回答你原来的问题,这就是我将如何完成它:
Sub FillAllWithFormula()
Dim i As Variant
Dim wsht As Worksheet
'If you are using this for a specific Worksheet use the following
Set wsht = ThisWorkbook.Worksheets(yourWorksheetName)
'or if you are always using this for the active sheet use the following
Set wsht = ActiveSheet
For i = 1 To wsht.Rows.Count
'Replace "X" with the column letter you want your formula to appear in
wsht.Range("X" & i).Formula = "=A" & i & "&B" & i & "&C" & i & "&D" & i & "&E" & i & "&F" & i & "&G" & i
Next
Set wsht = Nothing
End Sub