Есть ли способ сложить несколько & ldquo; NOT & rdquo; в этом заявлении IF

Я предполагаю, что если вы можете перейти с C ++ на Java, тогда вы все настроены. Я видел продукт такого рода, о котором вы хорошо говорите. Так получилось, что мы использовали CodeMesh . Я не специально одобряю этого поставщика или делаю какие-либо заявления об относительном качестве их продукта, но я видел, что он работает в довольно высоком сценарии.

Я бы сказал, что, если вообще возможно, я бы рекомендуйте избегать прямой интеграции через JNI, если сможете. Некоторый простой подход к сервису REST или архитектура на основе очереди будут проще упрощать и диагностировать. Вы можете получить довольно приличную производительность, если тщательно использовать такие развязанные технологии.

0
задан Meister96Fels 18 January 2019 в 12:54
поделиться

6 ответов

Еще один о том, что я понимаю:

 if (A1<> "" and A2<>"") or  (A1= "" and A2="") then
     Boolean = False
 end if
0
ответ дан Aaron Pan Vega 18 January 2019 в 12:54
поделиться

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

=SUMPRODUCT(--(range<>""))=0

и аналогичная формула, чтобы проверить, не является ли каждая ячейка не пустой:

=SUMPRODUCT(--(range=""))=0

и применить формулу, используя VBA, или как обычную формулу Excel.

Взято с этой страницы: https://exceljet.net/formula/all-cells-in-range-are-blank

0
ответ дан F.C. 18 January 2019 в 12:54
поделиться

Я с трудом пытаюсь понять, что вы хотите сделать с этой строкой кода, но вот мой шанс. Он вернет Boolean = False только в том случае, если A1 пусто, а A2 нет, или если A1 не пусто, но A2 равно.

If (A1 = "" and A2 <> "") OR (A1 <> "" and A2 = "") Then
    Boolean = False
End If
0
ответ дан Thryn 18 January 2019 в 12:54
поделиться

Не ответ, но мой вывод заключается в том, что ваше утверждение всегда будет оцениваться как ИСТИНА

enter image description here

Несколько иной подход

Sub x()

Dim b As Boolean

b=(WorksheetFunction.CountBlank(Range("A1:A2")) <> 1)

End Sub
0
ответ дан SJR 18 January 2019 в 12:54
поделиться

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

Быстрый урок по булевой алгебре:

NOT(A AND B) = NOT(A) OR NOT(B)
NOT(A OR B) = NOT(A) AND NOT(B)

Применительно к вашему выражению пишите для простоты A1 = "" как A и A2 = "" как B:

  Not (A And B) Or Not (Not A And Not B)
= Not(A) Or Not(B) or Not(Not(A)) or Not(Not(B))
= Not(A) Or Not(B) or A or B
= True

] Я имею в виду, что вы имеете в виду что-то вроде:

  Not((A and B) or (Not(A) and Not(B)))

Что может быть упрощено, но это ухудшает читабельность (то, что вы хотите проверить, становится менее очевидным).

Наконец, вы не должны писать что-то вроде этого:

If Expression
    Boolean = False

, а:

Boolean = Not(Expression)

Предполагая, что присвоение переменной не является заполнителем для фактического кода.

0
ответ дан gazoh 18 January 2019 в 12:54
поделиться
Dim i As Long, result As Boolean
For i = 1 To 25
    If Cells(1, i).Value = Cells(2, i).Value Then
        result = True
    Else
        result = False
        Exit For
    End If
Next i

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

Столбцы можно рассматривать как буквы или цифры.

0
ответ дан euskadi 18 January 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: