Dynami c функция суммы Excel - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь составить формулу суммы на динамическом диапазоне c. Во многом как в сводной таблице.

Взглянув на картинку, я хочу, чтобы L15 было суммой диапазона от L16 до пустой строки. Поскольку диапазон равен динамическому c, я не уверен, как записать его в свой код. Пока что у меня есть следующее:

If out.Range("A15").Cells(i, 1) = "Aktier" Then
        out.Range("L15").Cells(i, 1) = Application.WorksheetFunction.Sum(Range("L15").Cells(i + 1, 1), Range("L15").Cells(i + 1, 1).End(xlDown))
End If

Итак, мой вопрос в основном заключается в том, как мне написать что-то вроде Sum (A1: End (xlDown))? :)

Надеюсь, вы поможете мне, ребята! : D

Заранее спасибо!

Data picture

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Пропуск шагов

Фрагмент:

If out.Range("A15").Cells(i, 1) = "Aktier" Then
    With out.Range("L15")
        .Cells(i, 1) = Application.WorksheetFunction _
          .Sum(.Parent.Range(.Offset(1), .Offset(1).End(xlDown)))
    End With
End If

Рабочий пример:

Option Explicit

Sub SumToBlank()

    Dim out As Worksheet: Set out = ThisWorkbook.Worksheets("Sheet1")
    Dim i As Long: i = 1

    If out.Range("A15").Cells(i, 1) = "Aktier" Then
        With out.Range("L15")
            .Cells(i, 1) = Application.WorksheetFunction _
              .Sum(.Parent.Range(.Offset(1), .Offset.End(xlDown)))
        End With
    End If

End Sub
0 голосов
/ 08 мая 2020

Во-первых, я бы рекомендовал каждый раз, когда это возможно, вы получали структуру, более похожую на базу данных, поэтому у меня был бы столбец, повторяющий концепцию, а затем вы могли бы легко использовать функцию Excel СУММЕСЛИ.

Вероятно, это не ваш случай (это похоже на результат бухгалтерской программы). Воспользовавшись использованием макросов VBA, вы можете использовать al oop для генерации столбца, о котором я упоминал ранее (вы также можете вычислить сумму, используя эту концепцию, но я считаю, что это более чистое создание лучшего формата данных). См. Изображение ниже: Excel Sample to Try Macro

Sub Add_Concepts()

i = 1
Concept = Cells(i, 2)
i = 2
Do While (Cells(i, 2) <> "")
 Cells(i, 1) = Concept
 If Cells(i + 1, 2) = "" Then 'Change in concept
  Concept = Cells(i + 2, 2) 'New concept
  i = i + 2 'add 2 to skip the New concept line and the white space
 End If
  i = i + 1
Loop

End Sub

Теперь вы можете использовать обычные функции Excel.

Надеюсь, это поможет!

...