Страницы: 1
RSS
Раскидать текст по матрице
 
Уважаемые спецы, как бы придумать способ раскидать текст по матрице X-Y в зависимости от значений координат.  
 
Пример исходных и конечных данных приведён в файле.  
Координаты X:{a..d), координаты Y:{а..д}, что на самом деле условно.  
В исходном тексте указаны координаты столбца и строки в матрице.  
Задача: Раскидать текст по координатам матрицы в зависимости от их индекса.  
Примечание: форматирование таблицы приведено для наглядности, чтобы обратить внимание на особенность: в ячейке (г,a) содержится два значения, а в (г,b). Аналогичная ситуация в строке "д".  
 
Мои мысли:  
1) Сводная таблица почти решает эту задачу, если бы только в полях сводной таблицы можно было использовать "перечисление" значений. А там должна быть формула, что сразу отметает вариант сводной таблицы.  
2) Можно не морочить голову, а заставить пользователя пользоваться автофильтром, задавая необходимые значения координат X и Y. Но это уже полу-автоматизация.  
 
И, наконец, вопрос: Можно ли сделать такое без привлечения VBA?
 
Можно и формулой...
 
Благодарю за готовое решение.  
Но если Вам не сложно, поясните, пжлст, эту формулу. Что здесь и для чего.
 
{quote}{login=}{date=27.08.2010 10:03}{thema=}{post}Благодарю за готовое решение.  
Но если Вам не сложно, поясните, пжлст, эту формулу. Что здесь и для чего.{/post}{/quote}  
 
на примере F6  
 
ЕСЛИ(($B$3:$B$17=$E6)*($C$3:$C$17=F$2);СТРОКА($A$3:$A$17)-2) - формирует массив совпадений кретериев указанных в столбцах X и Y и подставляет номер, который расчитывается с помощью функции СТРОКА(),    
получается массив: {ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:7:8:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}  
С помощью НАИМЕНЬШИЙ(массив,номер) выбираем данные 7,8 в зависимсти от порядка    
быквы "г" (1,2), порядок определяется СЧЁТЕСЛИ($E$3:$E6;$E6)  
 
Далее ИНДЕКС() выбирает из Массива критериев нужное значение (для F6 - седьмое значение).  
 
PS: kim немножко схитрил,проверка на ошибку делается с помощью условного форматирования (перекрашивается в белый цвет), т.к. если критерий не находится, то формула выдает ошибку #ЧИСЛО!  
 
можно усложнить формулу, чтобы ошибка "ловилась" в самой формуле:  
так для F3 формула будет  
{=ЕСЛИ(ЕОШ(НАИМЕНЬШИЙ(ЕСЛИ(($B$3:$B$17=$E3)*($C$3:$C$17=F$2);СТРОКА($A$3:$A$17)-2);СЧЁТЕСЛИ($E$3:$E3;$E3)));"";ИНДЕКС($A$3:$A$17;НАИМЕНЬШИЙ(ЕСЛИ(($B$3:$B$17=$E3)*($C$3:$C$17=F$2);СТРОКА($A$3:$A$17)-2);СЧЁТЕСЛИ($E$3:$E3;$E3))))}  
далее ее копируем во все остальные ячейки  
если критерий не найде, то значение ""
Страницы: 1
Читают тему
Наверх