下午好,
我遇到一个有关在面对批量数据时在列内进行复制的查询。
基本上我有一个可重复的表。
Eaxch表从B列开始,一直朝下53列延伸到BB列,然后有3空列,下一个表从BF到EF列开始,最后一个表从EJ到HJ列。
然后,我想复制一个B列,然后将其粘贴到FN列中,因为这是表的最左侧。要复制其他列,我必须知道,表的最左列和最右列之间的距离是53(相同),第一个表的最左列和第二个表的最左列之间的距离是56。 最初我数过像 COLUMNS(FN11:HN11)= 53,这是一个简单的Excel公式。接下来,我使用以下代码:
Sub cols_UK()
Sheets("14").Activate
Range("A11:A4739").Copy
Range("FN11, HR11, JU11").PasteSpecial xlPasteValues
Range("B11:B4739").Copy
Range("FO11, HO11, HS11, JS11, JW11, LW11").PasteSpecial xlPasteValues
这显然是可行的,但是这项工作非常繁琐。
与此处相同:
Range("FM11, HQ11, JU11, LX11").Value = "1to10"
Range("FM479, HQ479, JU479, LX479").Value = "11to20"
Range("FM947, HQ947, JU947, LX947").Value = "21to31"
Range("FM1415, HQ1415, JU1415, LX1415").Value = "MONTH"
我想在彼此之间有特定距离的列中放置一些值。
如果是列,是否有一些循环解决方案?
答案 0 :(得分:0)
这应该可以解决问题。如果您有任何问题,请告诉我。
Sub CopyTableInWorksheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim lStartColumn As Long
Dim lStartRow As Long
Dim lEndRow As Long
Dim lSpacer As Long
Dim lWidth As Long
Dim lPasteColumn As Long
'Set table size and spacing values
lStartColumn = 2
lStartRow = 2
lEndRow = 100000
lSpacer = 3
'Determine width of table, set the column number to start the new table, then copy and paste
lWidth = ws.Range(ws.Cells(lStartRow, lStartColumn), ws.Cells(lStartRow, lStartColumn).End(xlToRight)).Columns.Count
lPasteColumn = ws.Cells(lStartRow, lStartColumn).Column + lWidth + lSpacer
ws.Range(ws.Cells(lStartRow, 2), ws.Cells(lEndRow, ws.Range("B1").Column + lWidth)).Copy ws.Range(ws.Cells(lStartRow, lPasteColumn), ws.Cells(lEndRow, lPasteColumn + lWidth))
End Sub