#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 голосов, поэтому я, по-видимому, не могу вас поддержать