Я не могу скопировать значения в следующий столбец той же строки

Я новичок в VBA, и мне нужна помощь. Я нашел этот код и адаптировал его к своим потребностям, но проблема в том, что я не могу скопировать первые 100 ячеек в следующий столбец в той же строке таблицы (столбец E уже заполнен, и я хочу вставьте значения в столбец F).

вот код:

Sub variable_to_check()
Dim j As Integer, r As Range, k As Integer, dest As Range
j = 100
With Worksheets("Calibrari")
    Set r = .Range("A2")
    k = 0
    Do
        Range(r, r.Offset(j - 1, 0)).copy
        With Worksheets("INCA")
            Set dest = .Cells(Rows.count, "F").Offset(0, 0).End(xlUp).Offset(0, -1)
            dest.PasteSpecial

            'this add the text "INCA_Read" in the first column after each 100 cells 
            lr = ActiveSheet.Cells(Rows.count, "E").End(xlUp).Row + 1
            ActiveSheet.Cells(lr, "A").value = "INCA_Read"

            If k < .Range("F13").Column - 2 Then
            k = k + 1
            Else
                k = 0
            End If
        End With
        Set r = r.Offset(j, 0)
        If r = .Range("A2").End(xlDown).Offset(1, 0) Then Exit Do
    Loop
End With 
ThisWorkbook.Worksheets("INCA").Cells.EntireColumn.AutoFit
End Sub

Sub value_to_be_checked() <--in this macro i think the issue is

Dim j As Integer, r As Range, k As Integer, dest As Range
j = 100
With Worksheets("Calibrari")
    Set r = .Range("C2")
    k = 0
    Do
        Range(r, r.Offset(j - 1, 0)).copy
        With Worksheets("INCA")
            Set dest = .Cells(Rows.count, "E").Offset(0, 0).End(xlUp).Offset(0, 1)
            dest.PasteSpecial

            If k < .Range("E13").Column - 2 Then
                k = k + 1
            Else
                k = 0
            End If
        End With
        Set r = r.Offset(j, 0)
        If r = .Range("C2").End(xlDown).Offset(1, 0) Then Exit Do
    Loop
End With

End Sub

Спасибо!

Добавьте . перед Range(r, r.Offset(j - 1, 0)).copy

cybernetic.nomad 13.09.2018 20:02

Я пробовал, но не работает

Elys 14.09.2018 08:01

Я думаю, вам нужно кое-что прояснить для нас. Вы хотите скопировать первые 100 строк столбца E на какой рабочий лист? Кажется, ваш код делает больше. Вы вставляете два with Worksheets, которые могут работать, но кажутся странными и могут легко вызвать путаницу (по крайней мере, в моем простом уме). Можете ли вы редактировать свой пост и добавить образцы данных и ожидаемый результат?

cybernetic.nomad 14.09.2018 14:38

мне жаль, что я не ответил до сих пор. Я хочу скопировать первые 100 строк из столбца A листа «Calibrari» в столбец E листа «INCA» и после каждых 100 строк поместить в столбец A текст «INCA_Read». Кроме того, я хочу скопировать первые 100 строк из столбца C (лист «Calibrari») в столбец F (лист «INCA»). Надеюсь, я прояснил недоразумения. Спасибо

Elys 17.09.2018 08:52
0
4
40
1

Ответы 1

Вместо использования Копировать / Вставить просто установите значение ячейки:

Worksheets("INCA").Cells(Rows.count, "E").End(xlUp).Offset(0, 1) = Range(r, r.Offset(j - 1, 0)).Value2

он помещает только первое значение в столбец F после 100 ячеек в столбце E. Столбец E имеет значения от E15 до E114, а первое значение в столбце F помещается в F115, а не в F15.

Elys 14.09.2018 08:14

Измените «0» в первом операторе смещения на «j-1».

Frank Ball 14.09.2018 19:42

Я сделал это изменение, оно скопирует значения, которые уже есть в листе "INCA", но в другую ячейку того же листа (я имею в виду лист "INCA")

Elys 17.09.2018 08:56

Другие вопросы по теме