DreamX: exel пост
DreamX 01 июн 2011 18:59 Изменен 07 июн 2011 13:35 Редактировать Ссылка на этот пост |
Вопрос по экселю: Есть у меня таблица... пару тыщ строк. И есть массив 300строк, повторяющих значение 300сот ячеек из первой таблицы. Надо выделить в первой таблице цветом эти самые 300строк, идентичных строкам в массиве. Можно ли это сделать средствами exel, не прибегая к ручному ctrl+f методу? |
Tёмный 01 июн 2011 20:34 Редактировать Ссылка на этот пост |
DreamX, можно. Например, =ВПР(...) поможет. Если надо подробнее, готов отписать чуть позже. |
DreamX 02 июн 2011 00:06 Редактировать Ссылка на этот пост |
мало информации, давай поподробнее |
Tёмный 07 июн 2011 13:32 Редактировать Ссылка на этот пост |
http://ru.wordpress.com/tag/jscript/ Посмотрел и не понял к чему это мало информации, давай поподробнее Ну ок, попытаюсь. Для начала обмолвлюсь о макросах. Есть такая приблуда Microsoft Visual Basic. Собственно с помощью неё можно что-нибудь нашкодить. Это тоже будет считаться средствами Excel, как ты и просил. Я же тебе навскидку предложил более примитивный ручной вариант. О нем и расскажу подробнее. Кстати, когда дело дошло до "рассказать подробнее", ещё разок перечитал условия, и пришел к выводу, что либо я не смогу, либо надо немножко попроще. Итак, немного подпилим - подшлифуем условия задачи. Есть "большая" таблица в пару тысяч, а может и больше строк, засунутая в Excel (может изначально набранная в Excel`е, а может средствами импорта-экспорта туда запиханная не суть важно). Записи в этой таблице логично структурированы (т.е. у нас не просто какой-то высер, а таки нормальная с точки зрения банальной логики таблица). Например, если в каждой строке есть ячейка, обозначающая пол м/ж, то эта ячейка везде будет в одном столбце. Есть "маленькая" таблица-массив строк в триста, повторяющая значения трёхсот строк (! не ячеек, иначе получается какой-то высер) из большой таблицы. Причем строки в "маленькой" таблице-массиве уникальны, нет двух и более полностью одинаковых строк. Задача: найти и покрасить в "большой" таблице строки, которые присутствуют в "маленькой" таблице-массиве. Небольшое лирическое отступление. Я тут выше писал про высеры. В целом я не считаю подобные высеры таблицами, поэтому и называю их высерами. Но с другой стороны, даже в случае обоюдного высера задача решаема средствами Visual Basic. Теперь вернемся к примеру. Даже, пожалуй, ещё немного упростим условия. Примем, что в имеющихся табличках есть столбец, содержащий уникальный идентификатор строки-позиции. Ну там код какой-нибудь, или уникальное название. (причем в первой, "большой" табличке строки могут повторяться, а в "маленькой" – нет). Назовем его ключевой столбец. Ну и далее примитивный, практически ручной, но зато очень быстрый вариант. Подходит, если тебе такое надо сделать один разок по-быстренькому (ну или делать очень редко). Тут будет ссылочка на файлик с примером, в котором в "большой" таблице 19`977 строк значений, в "маленькой" таблице-массиве 211 строк. Обе таблички содержат 7 столбцов, столбец_01 – ключевой. В таблицах из примера изначально N столбцов. В "большую" таблицу в N+1 столбец забиваем формулу =ВПР(искомое_значение;таблица;номер_столбца;интервальный_просмотр) Где: искомое_значение – ссылка на ячейку ключевого столбца этой строки таблица – ссылка на "маленькую" таблицу-массив важно: 1) Ключевой столбец в маленькой таблице-массиве должен быть первым. Если он не первый, то добавляем вперед пустой столбец и вбиваем в него ссылку на ключевой 2) Чтобы при копировании формулы не съехала ссылка на маленькую табличку, в адресе ячеек не забываем добавить доллары "$" номер_столбца – номер того столбца, из которого сюда будут подтягиваться значения. Для нашего примитивного случая абсолютно похуй какой номер. интервальный_просмотр – напишем "ложь", чтобы искал точные совпадения. В файлике нашего примера это будет выглядеть так: H2 =ВПР(A2;smalltable!$A$2:$H$212;1;ЛОЖЬ) Далее копируем полученную формулу во весь столбец: Ctrl + C Ctrl + \|/ <- Ctrl + /|\ -> Ctrl + shift + /|\ Ctrl + V Лирическое отступление. Умники, которые попробуют опуститься вниз через столбец слева, могут обломаться, в случае если столбец содержит пустые ячейки. Сам по-началу так обламывался, когда не замечал, что столбец то заполнен не весь, и часть данных таблички потом терялась. Правда и в моем варианте тоже можно лососнуть, если пустые ячейки находятся как раз внизу столбца. Но ничего не помешает чутка сдвинуться стрелками, или снова упасть вниз, и подняться по более левому столбцу. Итак, наш вспомогательный столбец заполнен. В строки, которые совпали, подтянулось некоторое значение. В строки, которые небыли найдены в "маленькой" таблице-массиве, подтянулось значение "#Н/Д". Если у тебя этого не произошло, то, возможно, у тебя отключено автоматическое вычисление, и надо жмакнуть F9 или покопаться в настройках. Далее, следуя идее примитивизма, врубаем автофильтр, и говорим ему отфильтровать все строки, в которых значение ячеек вспомогательного N+1 столбца не равно "#Н/Д". Полученный список строк выделяем, красим. Отпускаем фильтр, наслаждаемся. В целом вот так примитивненько. С удовольствием рассмотрю иные варианты, делитесь. Можно, конечно, поиграть ещё с "условным форматированием" вместо фильтра. Тогда даже закрашивание будет динамичным: изменения значения строк в "маленькой" таблице-массиве, будет приводить к изменению закраски в "большой" таблице. Ну и напоследок ещё один хинт: если с виду в таблице нет ключевого столбца, то его можно создать сцепив несколько имеющихся (в вспомогательном столбце, который и будет ключевым, рисуем =ссылка_на_ячейку_недоключевого_столбца01& ссылка_на_ячейку_недоключевого_столбца02& ссылка_на_ячейку_недоключевого_столбца03) |
Tёмный 07 июн 2011 13:35 Редактировать Ссылка на этот пост |
о как! красивости наведу чуть позже, когда ссылочку на файлик буду прикручивать. у меня с работы фтп залочен, а выкладывать файлик на другие ресурсы - религия не позволяет. |
Новое сообщение
Наверх>Страницы 1