Обработка файлов Excel

migel

//я понимаю что уже заспамил сегодня H&S своими тредами, но тем не менее)
Попросили автоматически обработать большой экселевский файл в котором до фига строк и 3 столбца. Нужно из него получить значения тех ячеек 3го столбца у которого значения 1го и 2го столбца равны между собой, причем нужно искать совпадение не только для ячейки справа, но и для всех предыдущих!
 т.е. для таблицы
A B C
1 2 3
2 7 5
4 5 8
ответом будет
A B C D
1 2 3 0
2 7 5 3
4 5 8 0

Объясните плиз темному как и с помощью чего это проще всего сделать?

oleg701

Решений несколько.
Например, создать 4-й столбец из нулей и единиц.
Ноль - если первые два значения не равны, 1 - если равны.
Делается это одной формулой, совсем недавно это здесь рассматривалось.
А потом автофильтр.
Другой вариант - макрос.
Третий - импорт таблицы в Access и там простенький SQL.

maggi14

Ну, например:
назначить ячейке D1 значение
=ЕСЛИ(A1=B1;C1;0)
растянуть на весь диапазон
поставить на столбец D автофильтр "непустые"
выделить столбец D и скопировать в буфер обмена
вставить специальной вставкой, указав "значения"
всё

migel

да, спасибо, получилось.
объясни еще плиз как вот этот шаг сделать?
поставить на столбец D автофильтр "непустые"

migel

Другой вариант - макрос.
Третий - импорт таблицы в Access и там простенький SQL.

да, тоже мысль, но через функции проще ятак понял.. )

migel

все, нашел, не надо

migel

последний вопрос:
растянуть на весь диапазон

как это можно сделать одним действием?
если мышкой тянуть, то это минут 5 получается...

maggi14

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

migel

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

oleg701

Есть такая фишка - в первой ячейке столбца рисуешь формулу, потом выделяешь большой диапазон вниз (с помощью Shift это можно сделать без утомительных прокруток) и выбираешь Правка - Заполнить - Вниз.
И формула из первой ячейки столбца копируется на весь диапазон.

migel

клево, спасибо.
п.с. только сейчас я узнал что направильно понял задачу (слишком просто)
на самом деле нужно искать совпадение не только для ячейки справа, но и для всех предыдущих.
т.е. для таблицы
A B C
1 2 3
2 7 5
4 5 8
ответом будет
A B C D
1 2 3 0
2 7 5 3
4 5 8 0

migel

в такой постановке эту задачу можно решить малыми затратами? (не разрюхивая как писать скрипты в екселе)

oleg701

Я бы замутил в D1 формулу =ЕСЛИ(СЧЁТЕСЛИ(B$1:B1;A1)>0;C1;0) и ее скопировал.
З.Ы. А, если нужно значение из той строки, где совпадение, то я погорячился.
Тут больше скриптами пахнет.
И что делать, если совпадений несколько?

migel

И что делать, если совпадений несколько?
хм, хороший вопрос, не знаю..
..п.с. чорд, кажеццо я попал -

alekc34

встаешь на угол первой ячейки и двойным кликом автоматически распространяешь на все строчки

alekc34

задача поставлена некорректно

migel

а ты знаешь как решать хотя бы в одном из вариантов? )

alekc34

во-первых, необходимо определить, значение третьего столбца какой строки мы берем: с первого или со второго столбца

migel

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

alekc34

тогда формула эдварда должна подойти

migel

тогда формула эдварда должна подойти
а поподробнее можно?
я вообще никогда не работал с экселем
(моя задача просто обработать этот файл и по возможности никогда с ним больше не стакиваться=) )

oleg701

Поподробнее F1 - Мастер ответов.
И ботать ВПР, ПОИСКПОЗ, СЧЁТЕСЛИ.
Одно из них поможет.
И если будешь юзать ПОИСКПОЗ, то глянь еще ИНДЕКС и ДВССЫЛ.

migel

ААА!
а то думал, что это за функция Эдварда, про которую гулька написала... (думал типа, есть же функции Бесселя в матлабе и тп., Эдвард наверно из той же компании)
ёё, собственно и не нашел -
теперь понял какого Эдварда она имела ввиду

oleg701

 
Оставить комментарий
Имя или ник:
Комментарий: