使用variables作为列

我正在制作一个macros来从多个Excel文件中收集数据,然后将它们合并成一个可以在同一个图上绘制所有数据的macros。

有问题使用variables来显示要粘贴的列。

cq = ColumnLetter(n) cp = ColumnLetter(n + 1) Columns("cq:cp").Select 

每次循环n变化3次。 它已经粘贴了CQ和CP列中的所有数据。

我知道这是一个基本的问题,Code是凌乱的,我通常不使用Excel VBA。

 Function ColumnLetter(ByVal intColumnNumber) Dim sResult intColumnNumber = intColumnNumber - 1 If (intColumnNumber >= 0 And intColumnNumber < 26) Then sResult = Chr(65 + intColumnNumber) ElseIf (intColumnNumber >= 26) Then sResult = ColumnLetter(CLng(intColumnNumber \ 26)) _ & ColumnLetter(CLng(intColumnNumber Mod 26 + 1)) Else Err.Raise 8, "Column()", "Invalid Column #" & CStr(intColumnNumber + 1) End If ColumnLetter = sResult End Function 'Loop through each Excel file in folder Do While myFile <> "" 'Set variable equal to opened workbook Set wb = Workbooks.Open(Filename:=myPath & myFile) cq = ColumnLetter(n) cp = ColumnLetter(n + 1) Columns("A:B").Select Selection.Copy Windows("Results.xlsx").Activate Columns("cq:cp").Select ActiveSheet.Paste 'Change First Worksheet wb.Worksheets(1).Range("A1") = ColumnLetter(n) wb.Worksheets(1).Range("B1") = Left(myFile, 9) 'Save and Close Workbook wb.Close SaveChanges:=True 'Get next file name myFile = Dir n = n + 3 Loop 

这是一个获取列字母的函数。

 Function Col_Letter(lngCol As Long) As String Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") Col_Letter = vArr(0) End Function 

更改

 Columns("cq:cp).Select 

 Columns(cq & ":" & cp).Select 
 Function ColumnLetter(ByVal intColumnNumber) ColumnLetter = Replace(Cells(1, intColumnNumber).address(false,false),"1","") End Function 

对于其余的:

 Dim wsRes As Worksheet Set wsRes = Workbooks("Results.xlsx").Worksheets("sheetNameHere") Do While myFile <> "" Set wb = Workbooks.Open(Filename:=myPath & myFile) With wb.Worksheets(1) .Range("A:B").Copy wsRes.Cells(1, n) .Range("A1").Value = ColumnLetter(n) .Range("B1").Value = Left(myFile, 9) End With wb.Close SaveChanges:=True 'Save and Close Workbook 'Get next file name myFile = Dir n = n + 3 Loop