MATCH () одно из нескольких значений в Excel?

У меня есть еще 100 листов финансовых данных, и я создаю мастер-лист со всеми данными компаний на одном всеобъемлющем листе. У меня почти все, но проблема в том, что компании иногда перечисляют доход на одну акцию как много разных вещей (может быть общий объем продаж на акцию, общий объем продаж на ADR, чистые операционные доходы на акцию и т. Д.).

Дело в том, что, поскольку ни один из них не указан вместе, на каждом листе всегда будет только один из них.

Есть ли способ использовать функцию MATCH со списком значений, и если один из них существует в указанном массиве, укажите мне номер строки?

Например:

скажем, sheet1 имеет значение «Чистая операционная выручка на акцию», и я хочу использовать функцию соответствия, не глядя и не указывая. Вместо этого я просто хочу перечислить некоторые значения, и если MATCH найдет ОДИН из них, дайте мне эту строку?

    Один из вариантов заключается в простое объединение нескольких операторов MATCH вместе с различными строками, которые вы хотели бы протестировать. Верните значение первого, которое не возвращает ошибку ( #N/A ).

    Например:

     =IFERROR(MATCH("Total Sales Per Share", FinancialData!A1:A100,0), MATCH("Total Sales Per ADR", FinancialData!A1:A100,0)) 

    Если вы хотите использовать массивы, следующий код также будет работать, но будет по-прежнему довольно подробным. Обратите внимание, что рабочий лист LookupTerms будет содержать массив поисковых терминов, а FinancialData будет содержать массив, в котором вы ищете условия:

     {=MIN(IFERROR(Match(LookupTerms!A1:A10, FinancialData!A1:A100, 0), ""))} 

    Другим вариантом будет использование VBA в вашем ответе. Следующий код позволит вам указать диапазон условий поиска и массив поиска. Он рассмотрит условия поиска первого термина, найденного в массиве lookup, и вернет индекс этого совпадения.

     Function MatchMultiple(lookup_terms As Range, lookup_array As Range) As Double Dim result As Variant Dim lookup_term As Range For Each lookup_term In lookup_terms.Cells If Not IsEmpty(lookup_term.Value) Then result = WorksheetFunction.Match(lookup_term, lookup_array, 0) If Not IsError(result) Then MatchMultiple = result Exit Function End If End If Next MatchMultiple = CVErr(xlErrNA) End Function 

    Добавьте эту функцию в модуль, а затем вызовите ее следующим образом:

     =MatchMultiple(LookupTerms!A1:A10, FinancialData!A1:A100) 
    Interesting Posts

    Excel с помощью формулы для проверки состояния и записи счетчика

    Excel VBA для запроса базы данных MS Access на Sharepoint с ADODB – «Недействительное имя файла»

    Как заставить vba компилировать код рабочего листа на рабочий лист. Активировать

    vba vlookup не работает в цикле

    Преобразование разделительных значений с запятой в столбцы – Excel

    Пользовательская функция не распознана

    Как получить цвет ячейки Excel в наборе данных вместе с данными VB.net

    просматривая столбцы и выделяя строку.

    Копировать / Вставить данные на основе значений в соседнем столбце

    Потеря объединенной границы ячеек при редактировании файла Excel с помощью openpyxl

    Найти имя листа с таблицей на нем

    Выбор ячейки в Excel на основе переменной, содержащей номер строки

    Сравните два столбца в excel

    .NET Excel Interop-код останавливается после открытия файла

    Сводная диаграмма Grand Total в таблице, но не в графике

    Давайте будем гением компьютера.