Excel VBA - Подвести итог колонке - PullRequest
1 голос
/ 02 июня 2010

Я пытаюсь суммировать столбец в Excel VBA, однако из-за пробелов я получаю 0 как сумму.

Dim rExternalTotal As Range , dExternalTotal as Double
Set rExternalTotal = Range(rReportData.Offset(0, 0), rReportData.Offset(261, 0).End(xlUp))
dExternalTotal = Application.WorksheetFunction.Sum(rExternalTotal)

dExternalTotal всегда равен нулю. Я не могу удалить пустые места на рабочем листе. Кто-нибудь может предложить способ сделать сумму программно?

Ответы [ 3 ]

2 голосов
/ 19 февраля 2011

Вот что вы можете сделать, если хотите добавить столбец чисел в Excel. (Я использую Excel 2010, но не должен иметь значения.)

Пример: Допустим, вы хотите добавить ячейки в столбце B формы B10 к B100 и хотите, чтобы ответ был в ячейке X или в переменной X (X может быть любой ячейкой или любой переменной, которую вы создаете, например, Dim X в виде целого числа и т. Д.). Вот код:

Range("B5") = "=SUM(B10:B100)"

или

X = "=SUM(B10:B100)

Внутри скобок в "= Sum (B10: B100) нет кавычек, но в скобках есть диапазон кавычек (" B5 "). Кроме того, между знаком равенства и кавычкой есть пробел. право на это.

Не будет иметь значения, если некоторые ячейки пусты, они просто увидят, что они содержат нули!

Это должно сделать это для вас!

2 голосов
/ 02 июня 2010

Я думаю, что вы неправильно истолковали источник ошибки; rExternalTotal представляется равным одной ячейке. rReportData.offset (0,0) невероятно похож на rReportData
rReportData.offset (261,0) .end (xlUp), вероятно, также равен rReportData, поскольку вы смещаете на 261 строку и затем используете функцию .end (xlUp), которая выбирает верхнюю часть непрерывного диапазона данных.
Если вас интересует сумма только одного столбца, вы можете просто обратиться ко всему столбцу:

dExternalTotal = Application.WorksheetFunction.Sum(columns("A:A"))

или

dExternalTotal = Application.WorksheetFunction.Sum(columns((rReportData.column))

Функция суммы таблицы будет правильно игнорировать пробелы.

Дайте мне знать, если это поможет!

1 голос
/ 19 февраля 2017

У меня есть метка в моей форме, получающая сумму чисел из столбца D в Листе 1. Меня интересуют только строки от 2 до 50, вы можете использовать счетчик строк, если количество строк является динамическим. У меня есть также несколько пустых записей в столбце D, и они игнорируются.

Me.lblRangeTotal = Application.WorksheetFunction.Sum(ThisWorkbook.Sheets("Sheet1").Range("D2:D50"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...