VBA - сумма, если строки скрыты ниже - PullRequest
0 голосов
/ 17 февраля 2019

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

, если значение компании A (например, J11) = значения компаний 1, 2 и 3, которые отображаются в H14, J14 и L14

тогда, когда строка 14 скрыта, тогда J11 = сумма (H14, J14, L14)

, и когда строка 14 видна, тогда J11 = 0

Это то, что у меня естьпока только чтобы скрыть / показать ряды.

Sub sbHideAll()

Rows("10:25").EntireRow.Hidden = True

End Sub

Sub sbShowAll()

Call sbHideAll

Rows("10:25").EntireRow.Hidden = False

End Sub

Sub sbShowGUCL()

Call sbHideAll

Rows("10:11").EntireRow.Hidden = False

End Sub

1 Ответ

0 голосов
/ 18 февраля 2019

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

Итак, возьмите значение диапазона следующим образом:

Application.WorksheetFunction.Sum(Union(Range("H13:H100"), Range("J13:J100"), Range("L13:L100")))

, затем возьмите значениевидимых ячеек, используя .Rows.SpecialCells(xlCellTypeVisible) следующим образом:

Application.WorksheetFunction.Sum(Union(Range("H13:H100").Rows.SpecialCells(xlCellTypeVisible), Range("J13:J100").Rows.SpecialCells(xlCellTypeVisible), Range("L13:L100").Rows.SpecialCells(xlCellTypeVisible)))

Затем минус одна из других

Вы можете либо присвоить каждую переменную, либо просто добавить ее прямо в J11 следующим образом:

Range("J11").Formula = Application.WorksheetFunction.Sum(Union(Range("H13:H100"), Range("J13:J100"), Range("L13:L100"))) - Application.WorksheetFunction.Sum(Union(Range("H13:H100").Rows.SpecialCells(xlCellTypeVisible), Range("J13:J100").Rows.SpecialCells(xlCellTypeVisible), Range("L13:L100").Rows.SpecialCells(xlCellTypeVisible)))
...