LookUP Value возвращает несколько объединенных значений

382

У меня есть два столбца: один - «Категория» с простым кодом, а другой - «Свойства дерева / группы» с одним или несколькими из следующих категорий, которые, если их несколько, объединяются с помощью запятой, см. Пример

enter image description here

Мне нужен этот столбец L

enter image description here

заполнить значение, состоящее из кода категории (A, B, C или U) и числа / нескольких чисел (от 1 до 3), которые зависят от этого

enter image description here

Так, например, на первом изображении первая строка с данными будет переведена в мой столбец L ('CAT') как "B, 2,3,1"

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

1
Вы можете использовать COUNTIF в Excel для подсчета количества строк, содержащих каждое значение. Сколько строк мы говорим и как часто вы должны это делать? Можно просто использовать текстовые фильтры для каждого значения «содержит» для быстрого суммирования, или, возможно, даже сводную таблицу. 5 лет назад 0
Я получаю необработанные данные, подобные этим, которые нуждаются в индивидуальном анализе, но комбинаций больше, чем категорий (от A до U), и не больше «качеств», чем показано на рисунках. Существуют десятки вкладок с множеством других вычислений одновременно, поэтому мне нужно, чтобы это происходило автоматически и заполняло объединенный столбец 5 лет назад 0
Вы знакомы с Python? Я думаю, что это был бы более простой способ автоматизации. 5 лет назад 0
Я не к сожалению, плюс я пытаюсь связать все вычисления, происходящие в электронной таблице, с простыми формулами Excel и VBA 5 лет назад 0
Вы уже пробовали форум Super User StackExchange? https://meta.stackexchange.com/questions/155487/if-i-had-a-question-with-excel-which-site-would-i-use 5 лет назад 0

2 ответа на вопрос

1

Я нашел обходной путь. не очень эффективно или умно, но это работает.

По сути, я создал массив со всеми возможными комбинациями трех элементов и добавил еще один столбец с правильным кодом, который должен был быть получен. enter image description here

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

= IF (деревья! AC2 <> "", ВПР (деревья! AC2, QUALITIES_ARRAY, 2, FALSE), "")

Надеюсь, поможет

1
Stefan_Fairphone

У меня есть рабочее решение. Нажмите Alt+, F11чтобы войти в редактор Visual Basic, создать новый модуль и вставить в него этот код. Вы сможете использовать CATфункцию в любой ячейке, например так:=CAT(category,qualities) .

' Function that expects a quality and returns the respective code ' Important: Tick check box beside "Microsoft Scripting Runtime" in Tools > References Function lookup_code(ByRef quality) Dim dict As New Scripting.Dictionary dict.Add "Arboricultural", "1" dict.Add "Landscape", "2" dict.Add "Cultural_and_Conservation", "3" lookup_code = dict(quality) End Function  ' Function to output the concatenated CAT code ' Use in any Excel cell as `=CAT(category, qualities)` ' Expects a category (e.g. "A") and a string of one or more qualities, separated by a comma Function CAT(category, qualities) Dim code As String If InStr(qualities, ",") > 0 Then ' Check for commas Dim QualityArray() As String QualityArray = Split(qualities, ",") ' Split string at commas For Each q In QualityArray code = code & "," & lookup_code(q) ' match code to quality Next Else code = "," & lookup_code(CStr(qualities)) End If CAT = category & code ' return category and codes (e.g. "B,2,3,1") End Function 

Похожие вопросы