Суммирование по активному столбцу vba

#excel #vba

#excel #vba

Вопрос:

 'Find amp; Copy Column for Actual Curtailed
        Dim ws As Worksheet
        Set ws = Worksheets("Report")
            Range("A2:AC2").Find(What:="Actual Curtailed").ActiveCell.Select
            Range("S20") = Application.WorksheetFunction.Sum(ws.Range(Column(ActiveCell.Column))).Copy
 

Этот код приводит к ошибке компиляции, я предполагаю, что я делаю что-то неправильно, суммируя столбец с тем, где находится активная ячейка.

Я пытаюсь оштрафовать «фактическое сокращение», получить номер столбца и поместить суммирование этого столбца в строку S20.

Спасибо

Ответ №1:

Этот код будет делать то, что вы намереваетесь.

 Dim SumClm      As Variant
Dim SumRng      As Range

With Worksheets("Report")
    SumClm = Application.Match("Actual Curtailed", .Rows(2), 0)
    If Not IsError(SumClm) Then
        ' from row 3 to the end of the column
        Set SumRng = .Range(.Cells(3, SumClm), .Cells(.Rows.Count, SumClm).End(xlUp))
       .Cells(20, "S").Value = WorksheetFunction.Sum(SumRng)
    End If
End With
 

Если столбец не найден, S20 останется пустым.

Ответ №2:

Я только что внес несколько изменений в ваш код

 Dim ws As Worksheet
Set ws = Worksheets("Report")
Range("A2:AC2").Find(What:="Actual Curtailed").Activate
Range("S20") = WorksheetFunction.Sum(Columns(ActiveCell.Column))    
 

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

1. Спасибо, что сообщили мне, пожалуйста, примите мой ответ с одобрением

2. Извините, у меня нет 15 голосов, поэтому я, по-видимому, не могу вас поддержать