Получение значений из объединенных столбцов Excel - PullRequest
6 голосов
/ 15 января 2009

Я делаю hlookup против значения, которое охватывает несколько столбцов. Мои данные похожи на это:

      A      B      C      D 
  ---------------------------  
1|       Col1          Col2
2|     x      y      z      w
3|
4|

В строках 3 и 4 (A3, B3, C3, D3 и т. Д.) Я хотел бы поместить формулы, которые будут выполнять поиск в другом месте в книге. Хитрость в том, что я хотел бы, чтобы он посмотрел «Col1» для столбцов A и B и «Col2» для столбцов C и D. «Col1» находится в A1, но на самом деле это A1 и B1 объединены. Когда я ссылаюсь на A1, появляется «Col1», но когда я ссылаюсь на B1, возвращаемое значение остается пустым.

Есть идеи?

Ответы [ 6 ]

15 голосов
/ 12 июня 2014

Вот еще одно решение, которое также может работать, когда объединенные ячейки имеют разную ширину, позвольте мне проиллюстрировать это на примере:

  1. Открыть свежий Excel, объединить B1, C1, D1
  2. Введите Col1 в объединенной ячейке
  3. В B2 , введите формулу = B1 и в C2 = C1 , в D2 = D1
  4. Вы должны увидеть B2 равным Col1 , в то время как C2, D2 равны 0
  5. В B3 введите формулу = A3 , скопируйте
  6. Щелкните правой кнопкой мыши по объединенной ячейке B1: D1 , выберите «вставить специальные -> формулы»
  7. Вы увидите, что объединенная ячейка имеет вид 0
  8. Введите Col1 в объединенной ячейке
  9. Теперь вы должны видеть, что все B2, C2, D2 равны Col1 , т.е. теперь вы можете ссылаться на объединенную ячейку так, как вы ожидаете.

Если вы можете объединить несколько ячеек разной ширины, просто вставьте формулу для всех них за один раз.

Причина этой работы заключается в выборе дизайна перкулятора от Microsoft. Кажется, что когда вы вставляете формулы в объединенные ячейки, каждая нижележащая ячейка получает формулу (напротив, если вы вводите значение, его получает только верхняя левая ячейка), так что вы можете использовать его в своих интересах и вставить формулу, которая ссылается на ячейку рядом с ней, а затем перезаписать верхнюю левую ячейку требуемым значением, тогда каждая ячейка, лежащая в объединенной ячейке, будет иметь это значение.

10 голосов
/ 15 января 2009

Чтобы получить доступ к меткам «Col1» и «Col2», вы можете использовать следующее:

= ИНДЕКС ($ 1: $ 1,1, КОЛОНКА () - MOD (COLUMN () - 1,2))

Примечание. Предполагается, что вы группируете одинаковое количество ячеек. Если бы это были три ячейки, вы просто изменили бы последнее число в формуле на 3 и т. Д.

Редактировать: Вот как это работает:

INDEX ($ 1: $ 1,1, x) возвращает значение ячейки в строке 1, столбец x. Если ваша таблица на самом деле не находится в верхнем левом углу рабочего листа, вы можете изменить ее на фактический диапазон, который включает все ваши объединенные метки. В этом случае это будет: ИНДЕКС ($ A $ 1: $ D $ 1,1, x)

COLUMN () возвращает номер столбца текущей ячейки (1 в столбце A, 2 в столбце B и т. Д.)

MOD (COLUMN () - 1, x) возвращает смещение от текущего столбца к столбцу, который содержит правильную метку

4 голосов
/ 22 июля 2009

Я построил в vba простую функцию, которая решит эту проблему:

Function mergedText(rngMergedCell As Range)

    If rngMergedCell.MergeCells = True Then
        mergedText = rngMergedCell.MergeArea(1, 1)
    Else
        mergedText = rngMergedCell
    End If

End Function

Если ячейка является объединенной ячейкой, функция вернет значение в первом элементе объединенной ячейки - здесь объединенная ячейка хранит свое значение

2 голосов
/ 22 декабря 2016

Более общий вариант предложения e.James:

={INDEX($A$1:A1, 1, MAX(NOT(ISBLANK($A$1:A1))*COLUMN($A$1:A1)-COLUMN($A$1)+1))}

Это зависит от того факта, что объединенные ячейки пусты, за исключением первой (если вы не в случае, подобном предложению Мартина).

Примечание: фигурные скобки предназначены для обозначения формулы массива (не вводите их, просто нажмите alt + return для подтверждения формулы в ячейке).

1 голос
/ 28 сентября 2015

Я понимаю, что опоздал на эту тему, но нашел очень простой ответ на этот вопрос.

Если, например, ваша метка объединена в 4 столбца a1: d1, и если вы ссылаетесь на b1, вы вернете "". Для динамического поиска правильных меток используйте этот fx в новой таблице:

=if(OriginalTable!B1="",ThisTable!A1,OriginalTable!B1)

Я уверен, что вы поймете, что при перетаскивании будут записываться диапазоны в e1: h1 и т. Д.

Вот и все. Надеюсь, это кому-нибудь поможет.

0 голосов
/ 15 января 2009

Ячейки B1 и D2 не содержат значений, только внутри A1 и C1 есть что-то внутри.

Так что вам просто нужно убедиться, что ваши формулы в столбцах A и B ссылаются на A1 как значение поиска, а ваши формулы в столбцах C и D оба ссылаются на C1 для значения поиска.

...