Я предполагаю, что если вы можете перейти с C ++ на Java, тогда вы все настроены. Я видел продукт такого рода, о котором вы хорошо говорите. Так получилось, что мы использовали CodeMesh . Я не специально одобряю этого поставщика или делаю какие-либо заявления об относительном качестве их продукта, но я видел, что он работает в довольно высоком сценарии.
Я бы сказал, что, если вообще возможно, я бы рекомендуйте избегать прямой интеграции через JNI, если сможете. Некоторый простой подход к сервису REST или архитектура на основе очереди будут проще упрощать и диагностировать. Вы можете получить довольно приличную производительность, если тщательно использовать такие развязанные технологии.
Еще один о том, что я понимаю:
if (A1<> "" and A2<>"") or (A1= "" and A2="") then
Boolean = False
end if
Вы можете использовать формулу, подобную приведенной ниже, чтобы оценить, является ли каждая ячейка в диапазоне пустой.
=SUMPRODUCT(--(range<>""))=0
и аналогичная формула, чтобы проверить, не является ли каждая ячейка не пустой:
=SUMPRODUCT(--(range=""))=0
и применить формулу, используя VBA, или как обычную формулу Excel.
Взято с этой страницы: https://exceljet.net/formula/all-cells-in-range-are-blank
Я с трудом пытаюсь понять, что вы хотите сделать с этой строкой кода, но вот мой шанс. Он вернет Boolean = False
только в том случае, если A1
пусто, а A2
нет, или если A1
не пусто, но A2
равно.
If (A1 = "" and A2 <> "") OR (A1 <> "" and A2 = "") Then
Boolean = False
End If
Не ответ, но мой вывод заключается в том, что ваше утверждение всегда будет оцениваться как ИСТИНА
Несколько иной подход
Sub x()
Dim b As Boolean
b=(WorksheetFunction.CountBlank(Range("A1:A2")) <> 1)
End Sub
Упрощение вашего логического выражения показывает, что оно всегда приводит к истине, поэтому здесь есть проблема.
Быстрый урок по булевой алгебре:
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)
Предполагая, что присвоение переменной не является заполнителем для фактического кода.
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
Вы можете изменить этот код для своих целей, но всякий раз, когда столбец имеет разные значения как в первой, так и во второй строке, результат будет ложным и истинным, если они равны.
Столбцы можно рассматривать как буквы или цифры.