Умножение 2 диапазонов вместе

#excel #vba

#excel #vba

Вопрос:

Я получаю синтаксическую ошибку в строке

Range("E4:E" amp; ColALastRow) =Application.WorksheetFunction.Product=(Range("A4:A" amp; ColALastRow), Range("D4:D" amp; LastRowOfD))

Col A и Col D имеют значения. Я хочу умножить их вместе на col E. Ниже приведен мой код на данный момент.

     Dim rngData As Range
    Dim ColALastRow As Long, LastRowOfD As Long
    
    ColALastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Set rngData = ActiveSheet.Range("A4:A" amp; ColALastRow)
    LastRowOfD = Cells(Rows.Count, "D").End(xlUp).Row

    Range("E4:E" amp; ColALastRow) =Application.WorksheetFunction.Product=(Range("A4:A" amp; ColALastRow), Range("D4:D" amp; LastRowOfD))
 

Комментарии:

1. не будет ли последняя заполненная ячейка одинаковой для обоих столбцов?

2. Я не понимаю, что вы имеете в виду

3. Все задействованные диапазоны должны иметь одинаковый размер, то есть одинаковое количество ячеек. Убедитесь, что это произойдет

4. PRODUCT() это так не работает. В результате будет получена сумма умножения всех значений. Итак, только одно значение, которое вы сейчас пытаетесь скопировать в несколько ячеек в столбце E. При этом у вас также есть синтаксическая ошибка, так как вы не хотите, чтобы это второе «=».

5. Если только у A на единицу больше, чем у D , или у D на единицу больше, чем у A…

Ответ №1:

Вы можете упростить свой подход, как показано ниже, и получить желаемые результаты.

 Sub ProductofTwoCol()
    With Range("E1:E" amp; Cells(Rows.Count, "A").End(xlUp).Row)
        .Formula = "=A1*D1"
        .Value = .Value
    End With
End Sub
 

Комментарии:

1. что означает .value = .value ?

2. @Chewjunnie Он удаляет формулу и оставляет ячейку с вычисленным значением.

3. Понял! Спасибо!

4. подождите, почему это вдруг перестало работать? Это фактически делит

5. @Chewjunnie это работает для меня так, как должно. Если это проблема, связанная с конкретным языком, то я не уверен в этом. Тем не менее, вы можете пошагово выполнить код с помощью F8 ключа и проверить промежуточные результаты шага.