Excel IF-оператор возвращает «ЛОЖЬ» - PullRequest
1 голос
/ 04 июня 2019

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

ведомость 1, ведомость 2, ведомость 3.

Запятая включена, если следующий оператор содержит содержимое. Полная остановка включена, если следующий оператор не имеет содержимого. Ничего не включается, если следующее и предыдущее утверждения не имеют содержания. Я использовал формулу ниже, но бит, который должен добавить полный стоп, возвращает FALSE:

=IF(A1<>"",IF(C1<>"",", "),IF(A1<>"",IF(C1="",". "),IF(A1="",IF(C1="",""))))

Что я сделал не так?

Ответы [ 4 ]

3 голосов
/ 04 июня 2019

Оператор IF имеет следующий формат: =IF(<Statement>, <Value_If_True>, <Value_If_False>)

Если мы разбиваем ваш код таким же образом, мы получим это:

    =IF(<Statement1>, IF_TRUE1(<Statement2>, <Value_If_True2>), IF_FALSE1(<Statement3>, IF_TRUE3(<Statement4>, <Value_If_True4>), IF_FALSE3(<Statement5>, IF_TRUE5(<Statement6>, <Value_If_True6>))))

Отсутствующий <Value_If_False> вернет FALSE по умолчанию.

Теперь, это может быть немного сложно для чтения, так что вот другой макет: Flow Chart of If Statement Logic

Надеюсь, вы сможете увидеть все дублирующие узлы "вопросов" там, а также, что "." невозможно достичь, потому что для этого требуется, чтобы A1<>"" было FALSE, а также TRUE.

Переписывая ваш код, все еще 1 «пропущенный» терминатор:

=IF(A1="", IF(C1="", "", FALSE), IF(C1="", ".", ", "))

(Или, если вы хотите быть по-настоящему модным, используйте выражение CHOOSE :)

=CHOOSE(1+(A1="")+2*(C1=""), ", ", FALSE, ".", "")
3 голосов
/ 04 июня 2019

Я полагаю, вы слишком усложнили свою формулу. Например, вы тестируете до 3 раз, если A1 пусто

Вы пытаетесь достичь этого?

=IF(A1<>"",IF(C1<>"","; ",""),IF(C1="",". ",""))
  • если A1 не пусто, а C1 не пусто =;
  • если A1 не пусто, а C1 пусто = ничего
  • если A1 пусто, а C1 пусто =.
  • если A1 пусто, а C1 не пусто = ничего
0 голосов
/ 04 июня 2019

Хорошо, попробуйте это просто, чтобы увидеть:

=IF(AND(A1="",C1=""),"",IF(AND(A1<>"",C1<>""),A1&";"&C1,A1&C1&"."))

enter image description here

И если оба не пустые, то они должны быть разделеныот ";"и закончил с "."...

=IF(AND(A1="",C1=""),"",IF(AND(A1<>"",C1<>""),A1&";"&C1&".",A1&C1&"."))

См .:

enter image description here

0 голосов
/ 04 июня 2019

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

IF(A1<>"",IF(C1="",". "),IF(A1="",IF(C1="","")))

Возможно, я не совсем понимаю вашу цель, но это должно сработать: я предполагаю утвержденияздесь определяются входные данные в столбцы A, B и C, и столбец A должен быть заполнен первым.

=IF(A1="","",IF(AND(B1="",C1=""),". ",", "))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...