http://i.stack.imgur.com/VcxRF.png

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

Вот мой код Я не понимаю, почему всегда ложно только десятичное число. Что я должен делать?

Sub calcu()

Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer

Dim g1 As Double
Dim g2 As Double
Dim hdp As Double
Dim ts1 As Double
Dim ts2 As Double

Application.ScreenUpdating = False

a = Cells(Rows.Count, "C").End(xlUp).Row

For b = 1 To a
  If IsNumeric(Cells(b, "C").Value) Then
    hdp = Cells(b, "G")

    ts1 = Cells(b, "L")
    ts2 = Cells(b, "M")
    t1 = Cells(b, "F")
    t2 = Cells(b, "H")
    g1 = ts1 - hdp
    g2 = ts2 - hdp

    v1 = 1.72
    v2 = 2.1
    v3 = 1.9
    v4 = 1.8
    v5 = 2

    If InStr(t1, "K") And g1 < ts2 Then
      Cells(b, "J") = "0"
    ElseIf InStr(t1, "K") And g1 = ts2 Then
      Cells(b, "E") = 1
      Cells(b, "J") = 1
    ElseIf InStr(t2, "K") And g2 < ts1 Then
      Cells(b, "E") = "0"
    ElseIf InStr(t2, "K") And g2 = ts1 Then
      Cells(b, "E") = 1
      Cells(b, "J") = 1
    Else
      Cells(b, "E") = "error"
      Cells(b, "J") = "error"
    End If
  End If
Next

Application.ScreenUpdating = True

End Sub

1 ответ1

0

Если вы имеете в виду, почему вы получаете error , это не имеет ничего общего с десятичными числами.

Ваш тест для строки 2 - 5 (столбец L) - 1.5 (столбец G), что равно 3,5. Затем вы проверяете, меньше ли это 1 или равно 1 (столбец M). Это не так, поэтому вы получаете error .

Тест не пройден полностью, где у вас есть буква G в столбце H, так как число, которое вы в итоге получите, больше, чем число в столбце M, с которым он тестирует.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .