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

#excel-formula

Вопрос:

Я создал книгу на нескольких листах, в которой есть данные манифеста (Лист1), Сэмми (Лист2), Трев (лист3), Данные сканирования (Лист4). На каждом из листов есть столбец с надписью «Коннот», и данные в ячейках столбца относятся к штрих-коду на документах, которые мы используем. Когда я открою рабочий лист драйверов, я отсканирую штрих-код из документов, и информация будет извлечена из листа манифеста, а также отметка времени/даты с помощью VBA. Но то, что я пытаюсь сделать, — это перенести имя драйвера, которое находится в ячейке на их рабочем листе, обратно в лист данных манифеста, который относится к только что отсканированному значению. Я с удовольствием загружу рабочий лист, если потребуется. Лист данных манифеста Лист Драйверов https://1drv.ms/x/s!AiXQNwMzQ3OrnCxn4D54gpnBH9V0?e=fxsTnz

Комментарии:

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

2. спасибо, приятель, в основном в листе данных манифеста мы хотим знать, у кого из отсканированных есть информация на их листе. оцените помощь

Ответ №1:

БЫСТРЫЙ И ПРЯМОЙ, но ограниченный (обновление)

Включите следующую функцию в Манифест в столбце драйвер (при условии, что имена драйверов-Сэмми, Хосе, Ян, Тейм и т. Д.):

 =IF(NOT(ISERROR(MATCH(A2,Sammy!A:A,0))),"Sammy", IF(NOT(ISERROR(MATCH(A2,Jose!A:A,0))),"Jose", IF(NOT(ISERROR(MATCH(A2,Ian!A:A,0))),"Ian", IF(NOT(ISERROR(MATCH(A2,Trev!A:A,0))),"Trev", IF(NOT(ISERROR(MATCH(A2,Iwi!A:A,0))),"Iwi","no match as yet")))))
 

Вуаля!

Если есть совпадение, оно будет отображаться, иначе оно покажет «пока не совпадает» (вы должны быть в состоянии довольно легко настроить это сообщение, даже будучи новичком! 🙂

Но если у тебя возникнет что-нибудь еще, дай мне знать. Разберусь быстро. Просто пытаюсь сделать так, чтобы новые участники чувствовали себя как можно более желанными, мистер редактор Stackoverflow! 🙂

Ограничение:

Существует ограничение на количество вложенных операторов «если», которые вы можете иметь, но это намного быстрее, чем создавать дополнительные запросы на вкладку, затем создавать единый список на основе FilterXML, а затем выполнять поиск в этом списке (см. ниже). Однако, если вы ожидаете, что у вас будет множество драйверов (как и во многих из них), то ниже будет лучше, чем выше.

Есть еще 2 варианта, которые я могу посоветовать:

  1. Используйте VB — учитывая, что ваш код / рабочие книги уже «дружественны» к VB (как вы уже упоминали)
  2. Поддерживайте центральную таблицу, содержащую все драйверы и даже связанные с ними данные манифеста, если вы действительно хотите.

FILTERXML (сложнее/дольше внедрять/создавать, но надежный и долговечный)

  1. Создайте дополнительный столбец в каждом из ваших листов драйверов (скажем, в столбце K для аргументации), содержащий имя драйвера и » — » и штрих-код (где штрих-код существует). Например.:

    =ЕСЛИ(A5=»»,»»,$C$2amp;»-«amp;A5)

где A5 = Штрих-код, $C$2 = Имя драйвера

  1. Вставьте дополнительный лист и создайте FilterXML, чтобы объединить все эти столбцы в один список (в этом примере я беру только первые 42 строки для каждого листа с именем драйвера (игнорируйте фанки зачеркнуто-это stackoverflow делает не мое — скриншот подтверждает):

    =FILTERXML( ««amp;TEXTJOIN(««,правда,Сэмми!$К$5:$К$42)amp; ««amp;TEXTJOIN(««,правда,Хосе!$К$5:$К$42)amp; ««amp;TEXTJOIN(««,правда,Ян!$К$5:$К$42)amp; ««amp;TEXTJOIN(««,правда,приручить!$К$5:$К$42)amp; ««amp;TEXTJOIN(««,правда,Трев!$К$5:$К$42)amp; ««amp;TEXTJOIN(««,правда,Иви!$К$4:$К$42)amp; ««,»//ов[не(предшествующее::*=.)]»)

Пример изображения комбинированного списка драйверов-штрих-кодов

  1. Наконец, в вашем листе манифеста вы можете выполнить поиск от Коннота (штрих-код, верно?) к одному фильтру-XML-листу/списку. Небольшая очистка с помощью функции mid для извлечения только имени, а не значения поиска «Имя штрих-кода» из шага 1 дает что-то подобное в поле драйвера листа манифеста:

    =IFERROR(MID(INDEX(FilterXML!B2#,MATCH(««amp;A35amp;»«,FilterXML!B2#,0)),1,SEARCH(«-«,INDEX(FilterXML!B2#,MATCH(««amp;A35amp;»«,FilterXML!B2#,0)))-1),»»)

Комментарии:

1. Спасибо , Джеймс, я попробую это сделать, посмотрю, как это работает, и отвечу на любые дополнительные вопросы или ответы. Ценю потраченное на это время и усилия.

2. Привет, Джеймс, я застрял на FilterXML и создаю это, абсолютный новичок в excel с точки зрения продвинутых вещей, подобных этому.

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

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

5. Рад это слышать. Вы можете/должны иметь возможность добавлять больше имен, но, как я уже сказал, если вы планируете добавить очень много в ближайшем будущем, возможно, стоит запросить ресурсы/время для разработки/правильной настройки этого инструмента мониторинга с самого начала (с использованием FilterXML) или что-то в этом роде. Вы могли бы сделать что-то подобное через фрилансера (с компенсацией, соизмеримой с поставленной задачей, я полагаю). В противном случае это в конечном итоге будет стоить больше времени/головной боли в будущем (только после поломки вещей, если вы заметите!:)