Сравнение чисел vba excel

Операторы сравнения чисел и строк, ссылок на объекты (Is) и строк по шаблону (Like), использующиеся в VBA Excel. Их особенности, примеры вычислений.

Операторы сравнения чисел и строк

Операторы сравнения чисел и строк представлены операторами, состоящими из одного или двух математических знаков равенства и неравенства:

  • <   – меньше;
  • <= – меньше или равно;
  • >   – больше;
  • >= – больше или равно;
  • =   – равно;
  • <> – не равно.

Синтаксис:

Результат = Выражение1 Оператор Выражение2

  • Результат – любая числовая переменная;
  • Выражение – выражение, возвращающее число или строку;
  • Оператор – любой оператор сравнения чисел и строк.

Если переменная Результат будет объявлена как Boolean (или Variant), она будет возвращать значения False и True. Числовые переменные других типов будут возвращать значения 0 (False) и -1 (True).

Операторы сравнения чисел и строк работают с двумя числами или двумя строками. При сравнении числа со строкой или строки с числом, VBA Excel сгенерирует ошибку Type Mismatch (несоответствие типов данных):

Sub Primer1()

On Error GoTo Instr

Dim myRes As Boolean

‘Сравниваем строку с числом

  myRes = «пять» > 3

Instr:

If Err.Description <> «» Then

  MsgBox «Произошла ошибка: « & Err.Description

End If

End Sub

Сравнение строк начинается с их первых символов. Если они оказываются равны, сравниваются следующие символы. И так до тех пор, пока символы не окажутся разными или одна или обе строки не закончатся.

Значения буквенных символов увеличиваются в алфавитном порядке, причем сначала идут все заглавные (прописные) буквы, затем строчные. Если необходимо сравнить длины строк, используйте функцию Len.

myRes = «семь» > «восемь» ‘myRes = True

myRes = «Семь» > «восемь» ‘myRes = False

myRes = Len(«семь») > Len(«восемь») ‘myRes = False

Оператор Is – сравнение ссылок на объекты

Оператор Is предназначен для сравнения двух переменных со ссылками на объекты.

Синтаксис:

Результат = Объект1 Is Объект2

  • Результат – любая числовая переменная;
  • Объект – переменная со ссылкой на любой объект.

Если обе переменные Объект1 и Объект2 ссылаются на один и тот же объект, Результат примет значение True. В противном случае результатом будет False.

Set myObj1 = ThisWorkbook

Set myObj2 = Sheets(1)

Set myObj3 = myObj1

Set myObj4 = Sheets(1)

myRes = myObj1 Is myObj2 ‘myRes = False

myRes = myObj1 Is myObj3 ‘myRes = True

myRes = myObj2 Is myObj4 ‘myRes = True

По-другому ведут себя ссылки на диапазоны ячеек. При присвоении ссылок на один и тот же диапазон нескольким переменным, в памяти создаются уникальные записи для каждой переменной.

Set myObj1 = Range(«A1:D4»)

Set myObj2 = Range(«A1:D4»)

Set myObj3 = myObj1

myRes = myObj1 Is myObj2 ‘myRes = False

myRes = myObj1 Is myObj3 ‘myRes = True

Оператор Like – сравнение строк по шаблону

Оператор Like предназначен для сравнения одной строки с другой по шаблону.

Синтаксис:

Результат = Выражение Like Шаблон

  • Результат – любая числовая переменная;
  • Выражение – любое выражение, возвращающее строку;
  • Шаблон – любое строковое выражение, которое может содержать знаки подстановки.

Строка, возвращенная аргументом Выражение, сравнивается со строкой, возвращенной аргументом Шаблон. Если обе строки совпадают, переменной Результат присваивается значение True, иначе – False.

myRes = «восемь» Like «семь»  ‘myRes = False

myRes = «восемь» Like «*семь»  ‘myRes = True

myRes = «Куда идет король» Like «идет»  ‘myRes = False

myRes = «Куда идет король» Like «*идет*»  ‘myRes = True

Со знаками подстановки для оператора Like вы можете ознакомиться в статье Знаки подстановки для шаблонов.

VBA in Excel stands for Visual Basic for Applications which is Microsoft’s programming language. To optimize the performance and reduce the time in Excel we need Macros and VBA is the tool used in the backend.

Some helpful links to get more insights about Macros, VBA in Excel :

1. Record Macros in Excel.

2. How to Create a Macro in Excel?

In this article, we are going to discuss various comparison operators in Excel VBA.

Implementation :

In the Microsoft Excel tabs, select the Developer Tab. Initially, the Developer Tab may not be available. 

The Developer Tab can be enabled easily by a two-step process :

  • Right-click on any of the existing tabs in the top of the Excel window.
  • Now select Customize the Ribbon from the pop-down menu.

  • The Excel Options Box, check the box Developer to enable it and click on OK.

  • Now, the Developer Tab is visible.

  • Now click on the Visual Basic option in the Developer tab and make a new module to write the program.
Developer  -> Visual Basic -> Tools -> Macros

Now create a Macro and give any suitable name.

This will open the Editor window where can write the code.

Comparison Operators in Excel:

S.No. Operators

Definition

1 <>

 Not equal operator is used to compare two operands. If the two operands

are not equal it returns TRUE else it returns FALSE.

For example : A=10, B= 20

The condition will be TRUE for A <> B, since A and B are not equal.

2 =

 Equal operator is used to compare two operands. If the two operands

are equal it returns TRUE else it returns FALSE.

For example : A=20, B= 20

The condition will be TRUE for A = B, since A and B are equal.

3 >

Greater than operator checks whether the operand on the left hand side is strictly 

greater than the operand on RHS. If greater then it returns TRUE else FALSE.

For example : A=10, B= 5

The condition will be TRUE for A > B, since A is greater than B.

4 <

Less than operator checks whether the operand on the left hand side is strictly

less than the operand on RHS. If greater then it returns TRUE else FALSE.

For example : A=10, B= 5

The condition will be FALSE for A < B, since A is greater than B.

5 >=

Greater than equal to operator checks whether the operand on the left hand side is either

greater or equal to the operand on RHS. If greater or equal then it returns TRUE else FALSE.

For example : A=10, B=10

The condition will be TRUE for A >= B, since A is equal to B.

6 <=

Less than equal to operator checks whether the operand on the left hand side is either

lesser or equal to the operand on RHS. If lesser or equal then it returns TRUE else FALSE.

For example : A=5, B=10

The condition will be TRUE for A <= B, since A is less than B.

The comparison operators are mostly used with the If Else Then statement in Excel because comparison operators return TRUE if the condition is met and FALSE if not. 

The syntax of If Else in Excel is :

If condition/expression Then
    Code Block for True
Else
    Code Block for False
End If

Let’s take an example where values of A=-1 and B=-5 and see the code in Excel VBA for all the comparison operators.

1. Equal To and Not Equal To

Sub Comparison_Operator_Demo()
'Entering the numbers
Dim A As Integer: A = -1
Dim B As Integer: B = -5
'Condition for Equal To
If A = B Then
    MsgBox " A and B are equal"
Else
    MsgBox " A and B are not equal"
End If
End Sub

In the above code, If the condition becomes FALSE since A and B values are not the same. So the code block inside Else will be executed.

Sub Comparison_Operator_Demo()
'Entering the numbers
Dim A As Integer: A = -1
Dim B As Integer: B = -5
'Condition for Not Equal To
If A <> B Then
    MsgBox " True since A and B are not same"
Else
    MsgBox " False since A and B are same"
End If
End Sub

In the above code If the condition becomes TRUE since A and B are not same. So the code block inside If will be executed.

2. Greater than or Less than operator :

Sub Comparison_Operator_Demo()
'Entering the numbers
Dim A As Integer: A = -1
Dim B As Integer: B = -5
'Condition for Greater Than
If A > B Then
    MsgBox " A is greater than B"
Else
    MsgBox " A is not greater than B"
End If
End Sub

In the above code If the condition becomes TRUE since A is greater than B. So the code block inside If will be executed.

Sub Comparison_Operator_Demo()
'Entering the numbers
Dim A As Integer: A = -1
Dim B As Integer: B = -5
'Condition for Less Than
If A < B Then
    MsgBox "True because A is less than B"
Else
    MsgBox "False because A is greater than B"
End If
End Sub

In the above code If the condition becomes FALSE since A is greater than B. So the code block inside Else will be executed.

Similarly, you can do for Greater than equal to and Less than equal to operators.

Операторы сравнения VBA

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

В следующей таблице приведены операторы сравнения VBA.

Операторы сравнения используются для сравнения значений в целях проверки. Допустим, вы разрабатываете простое приложение для точек продаж. В этом приложении вы хотите проверить значения, введенные перед публикацией. В таких случаях вы можете использовать операторы сравнения. Этот оператор проверит отрицательные числа или удостоверится, что оплаченная сумма не превышает сумму счета. Операторы сравнения пригодятся в таких ситуациях.

S / N оператор Описание пример Вывод
1 знак равно Равно: проверяет, равны ли два значения. Он также используется в качестве оператора присваивания Если x = z, то Возвращает true, если они равны, иначе возвращает false
2 < Менее чем: этот оператор используется для вычитания чисел Если x <z, то Возвращает true, если x меньше z, иначе возвращает false
3 > Больше чем: этот оператор используется для умножения чисел Если x> z, то Возвращает true, если x больше z, иначе возвращает false
4 <> Не равно: этот оператор используется для деления чисел Если x <> z, то Возвращает true, если они не равны, иначе возвращает false
5 <= Меньше или равно: Если x <= z, то Возвращает true, если x меньше или равен z, иначе возвращает false
6 > = Больше или равно: Если х> = Тогда Возвращает true, если x больше z, иначе возвращает false

Пример исходного кода

Оператор равного сравнения

    If 2 = 1 Then
            MsgBox "True", vbOKOnly, "Equal Operator"
        Else
            MsgBox "False", vbOKOnly, "Equal Operator"
    End If

ВОТ,

  • «If 2 = 1 Then… Else… End If» использует оператор if для оценки условия «2 = 1»
  • «MsgBox…» – это встроенная функция, которая отображает окно сообщения.
    • Первый параметр «True» или «False» – это то, что будет отображаться в окне сообщения. В нашем примере 2 не равно 1, поэтому в поле сообщения отображается «ложь».
    • Второй параметр «vbOKOnly» – это кнопка, которая отображается в окне сообщения
    • Третий параметр «Оператор равенства» – это заголовок окна сообщения.

Выполнение приведенного выше кода дает следующие результаты

Операторы VBA

Загрузите приведенный выше код Excel

These are operators that are used to compare values. Comparison operators include equal to, less than, greater than and not equal to

Comparison operators are used to compare values for validation purposes. Let’s say you are developing a simple point of sale application. In this application, you want to validate the values entered before you post. In such cases, you can use comparison operators. This operator will check against the negative numbers or to ensure that the amount paid does not exceed the billed amount. Comparison operators come in handy in such situations.

The following table lists the comparison operators defined in VBA.

Operator Description
= Equal: checks if two values are equal. It is also used as an assignment operator
< Less than: This operator is used to subtract numbers
> Greater than: This operator is used to multiply numbers
<> Not equal to: This operator is used to divide numbers
<= Less than or equal to:
>= Greater than or equal to:

VBA Comparison Operators with Example

The following table shows Excel VBA Comparison Operators with examples and output.

S/N Operator Example Output
1 = If x = z Then Returns true if they are equal, else it returns false
2 < If x < z Then Returns true if x is less than z, else it returns false
3 > If x > z Then Returns true if x is greater than z, else it returns false
4 <> If x <> z Then Returns true if they are not equal, else it returns false
5 <= If x <= z Then Returns true if x is less than or equal to z, else it returns false
6 >= If x >= Then Returns true if x is greater than or equal to z, else it returns false

Example source code

Equal Comparison Operator

    If 2 = 1 Then
            MsgBox "True", vbOKOnly, "Equal Operator"
        Else
            MsgBox "False", vbOKOnly, "Equal Operator"
    End If

HERE,

  • “If 2 = 1 Then… Else… End If” uses the if statement to evaluate the condition “2 = 1”
  • “MsgBox…” Is a built-in function that displays a message box.
    • The first parameter “True” or “False” is what will be displayed in the message box. In our example, 2 is not equal to 1, therefore, it will show “false” in the msg box.
    • The second parameter “vbOKOnly” is the button that is displayed in the message box
    • The third parameter “Equal Operator” is the title of the message box.

Executing the above code gives the following results

VBA Operators

Download the above Excel Code

Содержание

  • Список основных операторов сравнения в VBA
  • Равно
  • Не равно
  • Больше чем
  • Больше или равно
  • Меньше, чем
  • Меньше или равно
  • Оператор
  • Оператор Like

VBA позволяет использовать операторы сравнения для сравнения значений. Используя эти операторы, вы можете сравнивать значения и в результате возвращать логическое значение True или False.

Сначала мы отобразим список операторов сравнения, которые можно использовать в коде VBA:

Оператор сравнения

Объяснение
=

Равно

Не равно

>

Больше чем

>=

Больше или равно

<

Меньше, чем

<=

Меньше или равно

Равно

В Равно Оператор проверяет, равны ли два значения, и возвращает True или False. Вот пример кода:

123456789101112 Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 5intB = 5Если intA = intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В этом примере мы хотим проверить, intA равно intB. Если это правда, значение Boolean blnResult будет True, в противном случае — False.

Сначала мы устанавливаем значения intA а также intB к 5:

После этого воспользуемся = в операторе If, чтобы проверить, соответствуют ли значения intA а также intB равны:

12345 Если intA = intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

Обе переменные равны 5, поэтому blnResult возвращает True:

Изображение 1. Использование оператора Equal To

Не равно

В Нет Равно Оператор проверяет, не равны ли два значения, и возвращает True или False. Вот пример кода:

Произошла ошибка. Пожалуйста, попробуйте позже.

В этом примере мы хотим проверить, intA не равно intB. Если это правда, значение Boolean blnResult будет True, в противном случае — False.

Мы используем в операторе If, чтобы проверить, соответствуют ли значения intA а также intB разные:

12345 Если intA intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

Значение intA равно 5, а значение intB равно 6, переменные не равны, поэтому blnResult возвращает True:

Изображение 2. Использование оператора Not Equal To

Больше чем

В Больше чем Оператор проверяет, больше ли первое значение второго и возвращает True или False. Вот пример кода:

123456789101112 Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 6intB = 5Если intA> intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В этом примере мы хотим проверить, intA больше, чем intB. Если это правда, значение Boolean blnResult будет True, в противном случае — False.

Кроме того, мы используем > в операторе If, чтобы проверить, имеет ли значение intA больше, чем intB:

12345 Если intA> intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В заключение, посколькуintA больше, чем intB, то blnResult возвращает True:

Изображение 3. Использование оператора «Больше, чем»

Больше или равно

В Больше или равно Оператор проверяет, больше ли первое значение второму или равно ему, и возвращает True или False. Вот пример кода:

123456789101112 Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 5intB = 5Если intA> = intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В этом примере мы хотим проверить, intA Больше или равно intB. Если это правда, значение Boolean blnResult будет True, в противном случае — False.

Мы используем>= в операторе If, чтобы проверить, имеет ли значение intA Больше или равно intB:

12345 Если intA> = intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В заключение, поскольку обе переменные равны 5, blnResult возвращает True:

Изображение 4. Использование оператора «Больше или равно»

Меньше, чем

В Меньше, чем Оператор проверяет, меньше ли первое значение второго и возвращает True или False. Вот пример кода:

123456789101112 Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 5intB = 6Если intA <intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В этом примере мы хотим проверить, intA меньше чем intB. Если это правда, значение Boolean blnResult будет True, в противном случае — False.

Мы используем < в операторе If, чтобы проверить, имеет ли значение intA меньше чем intB:

12345 Если intA <intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В качестве intA меньше чем intB, то blnResult возвращает True:

Изображение 5. Использование оператора «Меньше чем»

Меньше или равно

В Меньше или Равно Оператор проверяет, меньше ли первое значение или равно ему, и возвращает True или False. Вот пример кода:

123456789101112 Dim intA как целое числоDim intB как целое числоDim blnResult As BooleanintA = 5intB = 5Если intA <= intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В этом примере мы хотим проверить, intA меньше или равно intB. Если это правда, значение Boolean blnResult будет True, в противном случае — False.

Мы используем <= в операторе If, чтобы проверить, имеет ли значение intA меньше или равно intB:

12345 Если intA <= intB ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, если

В заключение, поскольку обе переменные равны 5, blnResult возвращает True:

Изображение 6. Использование оператора «Меньше или равно»

Оператор

Оператор Is проверяет, содержат ли две объектные переменные один и тот же объект:

12345678910111213 Sub CompareObjects ()Dim ws1 как рабочий лист, ws2 как рабочий листУстановить ws1 = Sheets («Sheet1»)Установить ws2 = Sheets («Sheet2»)Если ws1 Is ws2, тоMsgBox «Тот же WS»ЕщеMsgBox «Различные WS»Конец, еслиКонец подписки

Оператор Like

Оператор Like может использоваться для поиска неточных текстовых совпадений. В этом примере проверяется, начинается ли строка с «Мистер».

1234567891011121314 Sub LikeDemo ()Dim strName As StringDim blnResult As BooleanstrName = «Мистер Майкл Джеймс»Если strName Like «Mr *» ТогдаblnResult = TrueЕщеblnResult = ЛожьКонец, еслиКонец подписки

Если вы хотите узнать, как сравнивать строки, щелкните здесь: VBA Compare Strings — StrComp

Если вы хотите узнать, как использовать операторы сравнения, щелкните здесь: Логические операторы VBA

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#1

04.06.2015 21:09:05

доброго времени суток всем.
наверное, я совсем заработался, не могу сейчас сообразить.
прошу помочь разобраться.

суть проблемы: известно, что вычисления с вещественными числами выполняются не абсолютно точно из-за особенностей машинной арифметики.
поэтому, к примеру, результат, на самом деле равный 5-ти, может быть представлен как 5.00000000000000, 5.00000000000001 или 4.99999999999998 — в зависимости от того, как он был получен.
мне нужно производить сравнения таких чисел, но корректно, т.е. с учетом этих самых особенностей.

на равенство проверяю так:

Код
const eps=0.0000001
if abs(a-b) < eps then ' равны

а как проверить на больше-меньше?
я додумался до такого:

Код
const eps=0.0000001
if a-b > -eps then ' a больше b
if a-b < eps then ' a меньше b

но сомневаюсь.

а с нестрогими условиями (>= и <=) совсем запутался :(

хелпми.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

#2

04.06.2015 21:26:45

Код
If ABS(a-b)< eps Then
If a-b < eps Then ' a меньше b
If b-a < eps Then ' b меньше a

я использую всегда строго

Изменено: TheBestOfTheBest04.06.2015 21:32:05

Неизлечимых болезней нет, есть неизлечимые люди.

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

#3

04.06.2015 21:30:21

Саша, не совсем понял сути вопроса, но я вот набросал вот такой макрос (результаты — в комментариях):

Код
Sub CompareDigits()

    Dim num1 As Variant
    Dim num2 As Variant

    Dim str1 As String
    Dim str2 As String
    
    str1 = "4,99999999999998"
    str2 = "4,99999999999998"
    
    num1 = CDec(str1)
    num2 = CDec(str2)
    
    MsgBox "num1 = num2: " & num1 = num2 ' FALSE
    MsgBox "num1 = num2: " & (CStr(num1) = CStr(num2)) ' TRUE

End Sub

There is no knowledge that is not power

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#4

04.06.2015 22:20:57

спасибо, разобрался.
код TheBestOfTheBest — тот же, что и у меня.
а проверка на нестрогое соответствие не имеет смысла.

Цитата
Johny написал: Саша, не совсем понял сути вопроса

ага  ;)
вопрос был в другом.

Изменено: ikki04.06.2015 22:22:45

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#5

05.06.2015 00:38:03

По-моему, на больше-меньше надо проверять без eps: сравнение это вычитание, и оно дает вполне однозначный результат: больше нуля или меньше нуля. Если до этого проверили на равенство с точностью до eps.

Код
If Abs(a - b) < eps Then
  'a = b
ElseIf a < b Then
  'a меньше b
Else
  'b меньше a
End If
 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

#6

05.06.2015 00:54:41

Цитата
Johny написал: MsgBox «num1 = num2: » & num1 = num2 ‘ FALSE

Евгений, приоритет конкатенации выше, поэтому корректнее так: MsgBox «num1 = num2: » & (num1 = num2) ‘ True

Изменено: ZVI05.06.2015 01:05:47

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

#7

05.06.2015 00:58:32

Цитата
ZVI написал:
Евгений, приоритет конкатенации выше

Владимир, точно! :) С «CStr(num1)» я правильно написал, а с просто num1… :D

There is no knowledge that is not power

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

#8

05.06.2015 01:39:12

Александр (ikki), если сравнивать с eps, то можно «пролететь», если числа в экспоненциальном формате.
Лучше сравнивать все 15 значащих разряда числа, отбросив остальные незначащие и учесть степенную часть после E .
Вот пример, описывающий проблемность использования eps, и в конце — как правильнее (но немного медленнее, конечно)

Код
Sub Test()

  Const eps = 0.0000001
  Dim a#, b#

  ' Число Pi
  a = 3.14159265358979      ' Большую точность явной константой задать не получится
  b = WorksheetFunction.Pi  ' А так точнее! Используйте в точных расчетах такой вариант

  ' здесь выдаст "равно"
  If Abs(a - b) < eps Then
    Debug.Print "равно, разность =" & CStr(a - b)
  Else
    Debug.Print "не равно, разность =" & CStr(a - b)
  End If

  ' Добавим степенную часть
  a = a * 1E+100
  b = b * 1E+100

  ' и здесь уже "не равно"
  If Abs(a - b) < eps Then
    Debug.Print "равно, разность = " & CStr(a - b)
  Else
    Debug.Print "не равно, разность = " & CStr(a - b)
  End If

  ' А вот так правильнее, CStr очищает число от "мусорных" разрядов
  a = CDbl(CStr(a))
  b = CDbl(CStr(b))
  Debug.Print Sgn(a - b)  ' 0 равно, 1 больше, -1 меньше

End Sub

Изменено: ZVI05.06.2015 02:13:51

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#9

05.06.2015 01:55:52

Цитата
ZVI написал: если сравнивать с eps, то можно «пролететь», если числа в экспоненциальном формате

Владимир, спасибо.
об экспоненциальном я даже не вспомнил, ибо у меня числа от 0 до 1000
а вот скорость — важна, ибо таких проверок много.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

Ну, тогда можно округлить числа с помощью функции round, несмотря на её банковскую сущность. И сравнить. Это тоже будет быстро.

Изменено: ZVI05.06.2015 02:04:01

 

Слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

#11

05.06.2015 09:54:43

недавно столкнулся с этим — решил применением currency формата
нужно было в ценах соблюдать точность до копейки.. с ценами все получилось, но перевод суммы на этот формат был ошибочным — так как сумма накапливалась пошагово, то в конце вылезала ошибка округления. так что сумму накапливал в дабл..
ну а так — раунд ее до нужного знака :)  и потом сравнивать

Живи и дай жить..

Понравилась статья? Поделить с друзьями:
  • Сравнение чисел excel функция
  • Сравнение части текста в ячейке excel
  • Сравнение цен в прайсах excel
  • Сравнение фио в excel
  • Сравнение файлов excel по содержимому