Увеличивайте строки и столбцы, чтобы найти дисперсию и вставить значения в Excel VBA - PullRequest
0 голосов
/ 20 марта 2019

У меня есть две таблицы. Лист1 содержит данные в B3: W296, а Лист2 содержит данные в альтернативных столбцах B3: B23, D3: D23, .., T3: T23. Теперь я должен заполнить пустые альтернативные столбцы на Листе 2 (C3: C23, E3: E23, .., U3: U23)

Значения Sheet2 должны быть заполнены как,

Sheet2.C3.value = VARP ("Sheet1" .Range (C3: C16)) ...

Sheet2.U3.value = VARP ("Лист1". Диапазон (U3: U16))

Для строки 4 в Sheet2 формула должна быть изменена следующим образом:

Sheet2.C4.value = VARP ("Sheet1" .Range (C17: C30)) ...

Sheet2.U4.value = VARP («Лист1». Диапазон (U17: U30))

Я должен сделать это в разных файлах, поэтому количество строк и столбцов на обоих листах может отличаться. Поэтому я не могу дать номера строк и столбцов в явном виде.

Я начал писать следующий код, но застрял,

Dim lRow, lRow2 As Long
Dim lCol, lCol2 As Long
Dim i, j As Integer

lRow = ThisWorkbook.Worksheets("Sheet2").Cells.Find(What:="*", After:=Range("A1"), LookAt:=xlPart, _
LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row
lCol = ThisWorkbook.Worksheets("Sheet2").Cells.Find(What:="*", After:=Range("A1"), LookAt:=xlPart, _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False).Column
lRow2 = ThisWorkbook.Worksheets("Sheet1").Cells.Find(What:="*", After:=Range("A1"), LookAt:=xlPart, _
LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row
lCol2 = ThisWorkbook.Worksheets("Sheet1").Cells.Find(What:="*", After:=Range("A1"), LookAt:=xlPart, _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False).Column

For i = 3 To lRow
    For j = 3 To lCol - 2 Step 2
            ThisWorkbook.Worksheets("Sheet2").Range(j & i).Value = VarP(ThisWorkbook.Worksheets("Sheet1").Range())
    Next j
Next i

Я не уверен, что делать с циклом for для этого случая.

Любая помощь будет принята с благодарностью. Заранее спасибо.

1 Ответ

0 голосов
/ 20 марта 2019

Я полагаю, что вы хотите вычислить для строк число, отличное от вашего текущего i ... вам нужно будет найти количество наборов varp для итерации, аналогично (не проверенному):

dim lr as long, lc as long, i as long, j as long, k as long, ns as long
with sheets(1)
    lc = .cells(1,.columns.count).end(xltoleft).column
    lr = .cells(.rows.count,1).end(xlup).row
    ns = application.rounddown(lr/14.01) 'uses 14.01 to divide so you start the 15th row on a separate set
    for j = 3 to lc -2 step -2
        for i = 3 to ns+3 'just added the plus 3 as edit1
            k = i*14+3  'starts on row 3
            sheets(2).cells(i,j).value = varp(.range(.cells(k,j),.cells(k+13,j))
        next i
    next j
end with
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...