2013-11-07 5 views
2

У меня есть небольшой первенствовать лист, такие как:Поместите список соответствующих значений в одну ячейку

 A    B    C 
1      Best Choices-> Aspen, Oak, Maple 
2 
3  Wood Type  Score 
4  Aspen   8.5 
5  Oak    8.6 
6  Elm    7.1 
7  Hickory   7.5 
8  Maple   8.2 

мне нужно проверить значения в колонке B и если оценка равна или больше, чем 8 (например), перечислите соответствующие значения из столбца A в одну ячейку в C1, как показано. Я пробовал множество примеров Index, Match, Vlookup, но не смог выполнить эту работу.

Я бы подумал, что формула будет довольно простой, но мне не повезло.

ответ

3

Сначала введите следующую UDF в стандартном модуле:

Public Function ListUm(rng As Range, crit As Double) As String 
    Dim rw As Long, L As Long 
    rw = rng.Rows.Count 
    For L = 1 To rw 
     If rng(L, 2) >= crit Then 
      ListUm = ListUm & ", " & rng(L, 1) 
     End If 
    Next 
    ListUm = Mid(ListUm, 3) 
End Function 

Тогда в С1 входят:

= ListUm (A4: B8,8)

+0

Спасибо! Это работает отлично. Невозможно сделать это с помощью формулы Excel, а затем исправить? Просто любопытно. Еще раз спасибо. – user2966734

+0

Сначала я попробовал формулу, используя конкатенированные VLOOKUP() s. Оказалось, что есть неизвестное количество матчей ..... вынуждены использовать VBA .......... возможно, более умная формула добавит ответ на это сообщение ......... .. –

+0

Еще один вопрос ... Столбец B имеет формулы от строки 4 до 100, но может содержать только данные в первых 50 строках. Когда результаты помещаются в ячейку (C1), они перечисляются как Item1, Item2, Item3 ,,,,,,,,,,,,,,,,. Я попытался изменить rng.rows.count на что-то вроде rng («A4», rng («A4»). End (xlDown)). Подсчитайте, но я получаю тот же результат. (В столбце A нет формул, поэтому я пытался подсчитать количество строк от A4 до конца.). Счетчик строк по-прежнему подсчитывает все строки, даже те, которые не содержат данных, но содержат формулы. Можете ли вы показать мне правильный синтаксис? – user2966734

Смежные вопросы