批量数据列(表)中的循环复制值

时间:2018-10-17 14:25:09

标签: excel vba excel-vba

下午好,

我遇到一个有关在面对批量数据时在列内进行复制的查询。

基本上我有一个可重复的表。

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"

我想在彼此之间有特定距离的列中放置一些值。

如果是列,是否有一些循环解决方案?

感谢和问候,enter image description here

1 个答案:

答案 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