Циклическое копирование значения в столбцах объемных данных (таблицы) - PullRequest
0 голосов
/ 17 октября 2018

Добрый день,

У меня есть вопрос, касающийся создания копии в столбцах при обработке больших данных.

В основном у меня есть таблицы, которые можно повторять.

Таблица Eaxch начинается с B-столбца и продолжается в направлении следующих 53 столбцов к столбцу BB, затем есть 3 пустых столбца, а следующая таблица начинается с BF до столбцов EF и продолжается с EJ до HJ.

Затем яхотел бы, например, скопировать столбец B, вставить его в столбец FN, зная, что это самая левая часть моей таблицы.Чтобы скопировать другие столбцы, я должен знать, что расстояние составляет 53 между самым левым и самым правым столбцом таблицы (которые одинаковы) и 56 между самым левым столбцом 1-й таблицы и самым левым столбцом 2-й таблицы.Первоначально я посчитал столбцы как 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 голосов
/ 17 октября 2018

Это должно сработать.Дайте мне знать, если у вас есть какие-либо вопросы.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...