Объедините функцию Sumif с concatenate

1771
Dan Stewart

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

Например:

yes yes  dog cat bird hen 

В этом случае результатом конкатенированной строки будет:

собака кошка

0
Ваш комментарий к ответу делает вопрос неясным. Где именно да? Являются ли эти пары строк, и у 1-й в каждой паре есть да для ячеек во 2-й строке пары, которую вы хотите объединить, или у строки 1 массива есть да, и вы хотите объединить связанные ячейки из каждой последующей строки ? fixer1234 7 лет назад 0

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

1
music2myear

Для этого потребуется оператор IF, который является допустимым выражением в формуле Excel.

Синтаксис:

IF( condition, [value_if_true], [value_if_false] ) 

Формула, вероятно, будет выглядеть так:

IF(ISNUMBER(SEARCH("Yes",A1)), CONCATENATE(A2, " ", B2, " ", C2)) 

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

Рекомендации:

ОБНОВЛЕНИЕ: Для беспокойства об использовании макроса в большом количестве значений

Макрос будет работать для этого. Если количество ячеек в ваших строках данных может варьироваться, и вам необходимо циклически проходить по каждой ячейке с информацией, существует несколько способов определения последней ячейки в строке (или столбце) с данными, а затем их передачи в другом месте макроса.

Учитывая Да / пусто в строке A и данные в строке B, я думаю, вы можете сделать это в три этапа:

  1. Получите последнюю ячейку с «Да» в строке A: используйте Find в диапазоне строки A.

  2. Получите значение из Find на шаге 1 и используйте его для перехода от ячейки A1 к ячейке A (значение из Find) и запишите номера ячеек для каждого найденного «Да».

  3. Возьмите эти числа и объедините каждую ячейку в строке B с этими числами из шага 2.

Вы можете сократить это до двух шагов, объединив шаги 2 и 3, просто извлекая и объединяя значения из B каждый раз, когда вы найдете Да в A.

К сожалению, я не гений в VBA, и только на самом деле выписал эффективные макросы, основанные на неделях усилий и большом количестве постов на форуме, поэтому я даже не собираюсь пытаться писать это. Но каждый шаг компонента должен быть достаточно легким для исследования, и тогда сборка может быть в соответствии с вашими предпочтениями.

Благодарю за ваш ответ. Макрос не будет работать, так как у меня будет бесконечное количество строк, в которые будет скопирована нужная формула. Что мне нужно, так это уравнение, которое точно соответствует тому, что вы заявляете: «Я хочу объединить только те ячейки, которые имеют значение« да »над ними» Dan Stewart 7 лет назад 0
Макрос все еще будет работать даже при большом (и / или растущем) количестве используемых ячеек, см. Отредактированный ответ: music2myear 7 лет назад 0

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