Я пытаюсь автоматизировать некоторые проверки в файле .csv с несколькими листами. Мне нужна формула, которая будет искать конкретный лист (лист лекарства) для двух заголовков столбцов (AgeAtStart и AgeAtStop). Найдя его, он выполнит оператор IF (=IF(E2<=F2,"Ok","Not Ok")) для значений этих двух столбцов, убедившись, что AgeAtStart меньше или равен AgeAtStop .

Лист лекарств

  AgeAtStart    Other Column    Other Column    Other Column    AgeAtStop
    61.85           x                 x               x           61.98
    61.98           x                 x               x           72.22
    72.62           x                 x               x           73.74
    72.27           x                 x               x           72.57
    73.82           x                 x               x           73.85
    61.85           x                 x               x           61.98

Я гибко отношусь к тому, как на листе "Сводка" будет сообщаться об этом, но я сначала сообщаю о количестве AgeAtStart которое больше, чем AgeAtStop или возвращает положение ячеек с неправильным возрастом. Я не хочу возвращать результаты для каждого оператора IF, а скорее возвращаю счетчик тех проверок IF, которые вернули "Ok" или "Not Ok".

Я пытался сделать это, используя комбинацию VLOOKUP и INDEX/MATCH, но пока не могу разобраться в логике. Может быть, VBA будет лучшим решением?

РЕДАКТИРОВАТЬ: Использование реализации cybernetic.nomad прекрасно работает.

=IF(INDEX('Sheet2'!2:2,,MATCH("AgeAtStart",'Sheet2'!$1:$1,0))<INDEX('Sheet2'!2:2,,MATCH("AgeAtStop",'Sheet2'!$1:$1,0)),"OK","Not OK")

В качестве продолжения я помещаю эту формулу в лист "Сводка" и ссылаюсь на лист "данные". Есть ли способ применить эту формулу автоматически "x" количество раз на листе "Сводка", где "x" представляет количество строк на листе "данные"? Таким образом, если в моей таблице данных есть 100 строк, в таблице "Сводка" формула автоматически заполняется 100 раз, ссылаясь на каждые 100 строк.

2 ответа2

0

Предполагая, что ваши данные в A1:E7 , вставьте следующую формулу в F2

=IF(INDEX(A5:E5,,MATCH("AgeAtStart",A$1:E$1,0))<INDEX(A5:E5,,MATCH("AgeAtStop",A$1:E$1,0)),"OK","Not OK")

И заселить

Чтобы получить сводку, вы можете отфильтровать "OK" или "Not OK", или выполнить COUNTIF

Чтобы игнорировать пробелы, используйте:

=IF(AND(NOT(ISBLANK(INDEX(A2:E2,,MATCH("AgeAtStart",A$1:E$1,0)))),NOT(ISBLANK(INDEX(A2:E2,,MATCH("AgeAtStop",A$1:E$1,0))))),IF(INDEX(A2:E2,,MATCH("AgeAtStart",A$1:E$1,0))<INDEX(A2:E2,,MATCH("AgeAtStop",A$1:E$1,0)),"OK","Not OK"),"")
0

Я смог расширить исходный ответ cybernetic.nomad для достижения своей цели. Я подробно изложил свою реализацию ниже ...

Суммарный лист Pass: Считает все вхождения "1" FAIL: Считает все вхождения "0" Всего записей: Считает строки , если поиск возвращает "Да" Резюме

Лист поиска Строки: Возвращает "Да", если ячейки столбца А не пусты (общее количество строк будет меняться с новыми файлами) AgeAt: Если INDEX-MATCH возвращает пустое значение, ничего не делает. В противном случае сравните возраст в столбцах AgeAtStart и AgeAtStop Lookup.

Формула в листе «Уточняющий запрос» копирует в столбцы больше строк в A и B, чем в моих данных. Это потому, что мы получаем эти файлы каждые две недели, а у некоторых будет больше или меньше строк. формула

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