Есть ли способ добавить несколько «НЕ» в этот оператор ЕСЛИ

Эй, умные люди,

Я надеюсь, что название моего вопроса достаточно подходит, я старался изо всех сил ^^

Я пытаюсь сопоставить 2 строки от столбца A до Z и проверить, имеют ли они один и тот же шаблон внутри. Под шаблоном я подразумеваю, что если в столбце A строки 1 что-то написано, то должно быть что-то написано и в столбце A строки 2. В качестве альтернативы оба могут быть пустыми.

Звучит просто, но оператор if разрешено выполнять только в том случае, если шаблон НЕ соответствует так: что-то написано в A1 и ничего не написано в A2.

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

Я уверен, что это кусок пирога для вас, ребята, но я просто не могу понять, как его структурировать. (может быть, конкретная проблема пятницы;))

(В коде я пропустил часть цикла, так как думаю, что это не нужно для проблемы)

                If Not (A1 = "" And A2 = "") Or Not (Not A1 = "" And Not A2 = "") Then
                    Boolean = False
                End If
Not (A1 = "" And A2 = "") будет TRUE, если в одном или обоих из A1 и A2 что-то есть. Not (Not A1 = "" And Not A2 = "") будет TRUE, если бит в скобках ложен, т. е. один или оба из A1 и A2 пусты. Я не уверен, что вы пытаетесь сделать.
SJR 18.01.2019 12:36

Извините за путаницу - я исправил свой комментарий, так как оригинал был неправильным.

SJR 18.01.2019 12:38

Бут должен быть пустым, или в обоих нужно что-то написать. Если это НЕ так, выполните код в операторе if. Разве Not (A1 = "" And A2 = "") OR Not (A1 = "*" And A2 = "*") не достиг бы этого?

G.M 18.01.2019 12:41
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
3
66
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

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

If (A1 = "" and A2 <> "") OR (A1 <> "" and A2 = "") Then
    Boolean = False
End If

Извините, если код вводит в заблуждение, но это было бы то, что я хотел. Я попробую и дам отзыв через несколько минут ^^ Большое спасибо

G.M 18.01.2019 12:45

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

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

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

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

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

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

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

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

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

Ответ принят как подходящий

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

Краткий урок булевой алгебры:

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)

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

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

Немного другой подход

Sub x()

Dim b As Boolean

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

End Sub

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

 if (A1<> "" and A2<>"") or  (A1= "" and A2 = "") then
     Boolean = False
 end if

Другие вопросы по теме