Excel VBA - заполнить ячейки в одном столбце на основе значений в другом - PullRequest
0 голосов
/ 15 ноября 2018

Прежде всего, извините за грубость - я только начинаю свое приключение с кодирования, и я как бы застрял на проблеме ниже ...

У меня есть файл, в котором есть названия продуктови их цены.Названия продуктов повторяются, как и цены.Я хотел бы иметь макрос, который будет читать столбец, содержащий названия продуктов (B), а затем копировать цены из столбца C, чтобы все продукты с одинаковыми именами имели одинаковую цену.После этого макрос должен ставить нули во всех строках, содержащих название продукта и цену (столбцы с D по F).

Я провел последние два дня, обдумывая эту идею, но мне кажется, единственноеПравильно, вот этот бит:

price = Range("C2").Value
If price > 0 Then
Range("D2:F2") = 0
End If

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

Есть ли простое решение, которое я пропустил?

Как выглядит файл раньше:

Как это должно выглядеть после:

Редактировать: У меня также есть ужасно грубое и громоздкое решение для копирования цен:

If Range("B5") = Range("B2") Then
Range("C2").Select
Range("C2").Copy
Range("C5").Select
Range("C5").PasteSpecial
End If

Но я понимаю, что для этого потребуется постоянное количество продуктов (не так -может быть 2, может быть два десятка) ... так что я не доволен этим.

1 Ответ

0 голосов
/ 15 ноября 2018

Я быстро сделал, просто глядя на фотографию, что вы ожидаете, посмотрите, если это так.

    Dim vLR As Long, vC, l, c  'l = line and c= column

    vLR = Cells(Rows.Count, 1).End(xlUp).Row 'vLR =  variable Last Row

    vC = 0 'vC = variable Columns you have
    c = 4 ' starting on the 4 column
    Do While vC < 3 '3 columns availability /ordered/sold
        l = 2
        Do While vLR >= l
            If Cells(l, c) = "" Then
                Cells(l, c) = 0
            End If
            l = l + 1
        Loop
        c = c + 1
        vC = vC + 1
    Loop
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...