Excel VBA Прокручивать столбец для копирования и вставки незаполненных в 3 других столбца? - PullRequest
2 голосов
/ 29 мая 2019

Я новичок в Excel VBA и столкнулся с препятствием. Я не получаю никаких ошибок, когда я запускаю это, и я не уверен, с чего начать ...

Я хотел бы выполнить поиск в столбце C, и если есть непустая копия этого значения в столбцах (D, G, I) того же листа. Я бы начал поиск в строке 4.

Я попытался пройти по коду, и я почти уверен, что моя ошибка в currVal = ws.Cells (i, "c"). Когда я перехожу, на листе Excel ничего не происходит (ни одна ячейка не копируется и не вставляется).

Любая помощь приветствуется! Я смотрел на это все утро.

Sub Copy()

Dim lastC As Integer
Dim i As Integer
Dim j As Integer
Dim currVal As String
Dim ws As Worksheet

Set ws = ActiveSheet
lastC = ws.Cells(Rows.Count, 1).End(xlUp).Row

For i = 4 To lastC
currVal = ws.Cells(i, "c")
   If ws.Cells(i, 1).Value <> "" Then
       currVal = ws.Cells(i, "D")
       currVal = ws.Cells(i, "G")
       currVal = ws.Cells(i, "I")
    End If

Next i

End Sub

Фактические результаты ничего не происходит (по крайней мере, я вижу) и без ошибок дает мне место, чтобы начать искать!

Ожидаемые результаты будут скопировать это в 3 дополнительных столбца. Результатом является фактическая формула. Формула - это то, что мне нужно скопировать.

5/27/2019 9:39 --- значение

= '15_2019-02_003.CSV'! $ A $ 2 - формула

Я обратился к формуле, обновляющей и удаляющей ссылки на файл CSV после извлечения значения из исходного файла CSV. Этот код предназначен только для поиска пробелов и копирования / вставки. Изображение Excel WS

1 Ответ

1 голос
/ 29 мая 2019

Добавляя к комментариям, вот как я бы написал этот конкретный код, может быть, это поможет:

Sub Copy()

    Dim ws As Worksheet: Set ws = ActiveSheet
    Dim lastC As Long: lastC = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    Dim R As Long 'I like to use R (rows) & C (cols), just because makes it more readable (for me)

    For R = 4 To lastC
        With ws
            If .Cells(R, "A").Value <> "" Then
                .Cells(R, "D") = .Cells(R, "C").Value
                .Cells(R, "G") = .Cells(R, "C").Value
                .Cells(R, "I") = .Cells(R, "C").Value
            End If
        End With
    Next R

End Sub

PS: я предпочитаю цифры вместо букв для .Cells ссылки, но в этом случаеПонятно использовать письмо.Только для лучшей практики - читаемость не должна смешивать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...