2015-03-18 6 views
0

У меня есть простая таблица: enter image description hereExcel VBA для хранения значения/преобразование проблема

Общее% используют следующую формулу:

= СУММЕЛИ ($ Z $ 23: $ AL $ 23; "%" ; Z24: AL24)

Где я в основном суммирую значение, если заголовок столбца равен «%». Тогда у меня есть процедура VBA, который просто петли через эти% Суммарные данные и проверяет, являются ли они равны 1 или нет, такие как следующие:

If Cells(iRowLoop, 39).Value <> 1 Then ' show user an error message and stop procedure 

Проблема заключается в том, что самый первый 100% клеток (со значением 18 245) утверждает, что это значение не равно 1. Я попытался следующие вещи:

  • умножить значение на 10 000 000, но нет ничего другого там, просто в «1»
  • Храните значение как двойное, чтобы увидеть, если это значение не похоже на «100.00000001», но оно вернуло значение «1 ' еще раз.

Я также проверил, содержат ли зеленые проценты целые числа (они являются ручным пользовательским вводом), и поэтому нет способа, каким образом результат может быть чем-то другим, кроме простого 100% ... но еще лучше говорит (процедура VBA), что первое число не 100%.

Как решить эту проблему? Любая помощь будет оценена по достоинству.

ответ

1

Если клетка на самом деле отображает "100%", то:

Sub OneHundredPercent() 
    If ActiveCell.Text = "100%" Then 
     MsgBox "100%" 
    End If 
End Sub 

позволит избежать каких-либо округления или преобразования проблемы:

enter image description here

+0

так просто, не думал об этом! Несмотря на то, что это не устраняет всю проблему, но это может быть какая-то ошибка excel. благодаря! –

+1

@RobertJ. ** Не ошибка Excel. ** Это просто, что Excel ОЧЕНЬ суетливый о значениях с плавающей запятой ........ альтернативой было бы применить какое-то ** округление **, чтобы избежать значений, которые очень близки к 100%, но не точно 100%. –

Смежные вопросы