Excel: объединить / извлечь ячейки, расположенные в объединенной ключевой ячейке - PullRequest
2 голосов
/ 08 октября 2010

Предположим, что простой лист выглядит так:

-------------
|  1  |  a  |  Need formula to return: "a,b,c"
|     |-----|
|     |  b  |
|     |-----|
|     |  c  |
-------------
|  2  |  a  |  Need formula to return: "a,b"
|     |-----|
|     |  b  |
-------------

Первый столбец - это объединенные ключевые ячейки, а второй столбец содержит неизвестное количество строк с текстовыми значениями в каждой ячейке.

Мне нужны средства, такие как VLOOKUP / HLOOKUP, для получения списка ячеек в ячейке объединенного ключа.
Даже если я хочу использовать макросы, как программно получить диапазон ячеек a-b-c в результате VLOOKUP на «1»?

Если это не сработает, я в порядке, просто логически проверив, существует ли буква в списке.
Например, учитывая значение ключа, я хочу иметь возможность программно применять условия, такие как:

- "Does 'a' exist at '1'? Yes."
- "Does 'c' exist at '2'? No."

EDIT:
Имейте в виду, что приведенное выше является примером; Я не обязательно знаю, что есть только «a», «b» и «c»; Я не знаю количество строк в каждом наборе.

Спасибо.

1 Ответ

3 голосов
/ 08 октября 2010

Это даст вам True / False, хотя вы можете вложить его в оператор IF, чтобы получить Yes / No.

=NOT(ISERROR(VLOOKUP("b",INDIRECT(ADDRESS(MATCH(1,A:A,0),2)&":"&ADDRESS(MATCH(2,A:A,0)-1,2)),1,0)))

Переменные - это «b», то есть буква, которую нужно искать,1 в первом операторе сопоставления - это число, от которого нужно отключить ключ, а затем 2 во втором операторе сопоставления - это просто переменная 1 + 1.

Формула сначала определяет диапазон ячеек в столбце 2переменная 1, определяя, где она начинается, а затем переходя на единицу меньше, чем где заканчивается следующее число.Конечно, это будет работать, только если числа являются последовательными и упорядоченными.Затем он выполняет VLOOKUP для определенного диапазона, который в вашем примере будет $ A $ 1: $ A $ 3.

...