Excel VBA Суммировать / добавлять значения вместе, даже те, которые запятые / десятичные - PullRequest
0 голосов
/ 27 ноября 2018

У меня проблема с тем, что я не могу добавить числа с десятичными знаками.Только числа без десятичных знаков.

Я написал код для суммирования значений из разных ячеек.Это прекрасно работает, пока числа без десятичных знаков.

Вот мой код:

Sub SumValues()

'This makro is made to add values together depending on 
'x amount of Sheets in the workbook:
Application.ScreenUpdating = False

'A will sum up the values from each cell, 
'depending on the amount of Sheets  in the this Workbook:
A = 0

For I = 1 To ThisWorkbook.Sheets.Count
    'Adding the values from cell E5 to Cells(5, 5 + (I - 1) * 3), 
    'with the distance 3 between each cell:
    A = A + Cells(5, 5 + (I - 1) * 3)
Next I

'The values A that is added togheter from the cells, is now put in a cell:
Worksheets("Sheet1").Cells(1, 1).Formula = "=" & A & ""
Application.ScreenUpdating = True

End Sub

Так что для 3-х листов, «I» идет от 1 до 3. Так что еслимои ячейки содержат эти числа:

Cell(5,5) = 2

Cell(5,8) = 3

Cell(5,11) = 8

Я получаю сумму в Cell(1,1) = 13

Но если у меня есть эти значения:

Cell(5,5) = 2,2

Cell(5,8) = 3

Cell(5,11) = 8

Я получаю «время выполнения»ошибка «9»: нижний индекс выходит за пределы диапазона «Сообщение об ошибке при запуске сценария.Есть предложения?

Еще один вопрос: можно ли вставить формулу в ячейку, где я складываю значения?Для Examlpe, если у меня есть 3 листа в моей книге, он суммирует значения из Cell(5,5), Cell(5,8) и Cell(5,11).Сумма указана в Cell(1,1).Но все, что я получаю, это число, а не формула.Можно ли заставить Cell показывать формулу "=E5+H5+K5"?Этот последний вопрос может быть «исправлением» для первого вопроса, если это разделитель, «который создает проблемы, может быть?

Спасибо

GingerBoy

1 Ответ

0 голосов
/ 27 ноября 2018

Протестировано и работает нормально

  1. Объявите свои переменные
  2. Вам необходимо указать ваши объекты на рабочем листе
  3. Нет необходимости отключать Screen Updating здесь.Вы только что изменили одну ячейку

Этот код поместит Value в A1 и Formula в B1


Отказ от ответственности:

Ваш код и приведенный ниже код могут быть потенциально Type Mismatch Error, если вы добавите в цикл любую ячейку с нечисловым значением.Если есть вероятность того, что какая-либо нечисловая ячейка окажется в диапазоне суммы, вы можете избежать ошибки, вложив в цикл что-то вроде следующего: If ISNUMERIC(Range) Then.


Sub SumValues()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim A As Double, i As Long, Loc As String

For i = 1 To ThisWorkbook.Sheets.Count
    A = A + ws.Cells(5, (5 + (i - 1) * 3))
    Loc = ws.Cells(5, (5 + (i - 1) * 3)).Address(False, False) & "+" & Loc
Next i

ws.Range("A1") = A
ws.Range("B1").Formula = "=" & Mid(Loc, 1, Len(Loc) - 1)

End Sub
...