Страницы: 1
RSS
Определение одинаковых значений в разных столбцах за вычетом повторяющихся значений
 
Уважаемые господа!  
Прошу оказать помощь в решении головоломки для меня.  
Необходимо посчитать количество одинаковых значений в столбце "А" и вычесть количество одинаковых значений в столбце "С"    
Заранее благодарен.
 
Загадка, однако. Че надо-то? Мож это - см. скрин.
Я сам - дурнее всякого примера! ...
 
А как можно вычесть номера вагонов?  
 
 
---------  
91212
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Возможно, счёт уникальных нужен был.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Возможно, я как то не правильно описал проблему, но задача стоит в следующем.  
Нужно посчитать количество одинаковых накладных (по существу это одна накладная которая включает в себя  десяток вагонов)для этого я использовал формулу ЕСЛИ(A1=A2;"";СЧЁТЕСЛИ($A$2:$A$27;A2)) результат 23, однако фактически результат должен быть 22, так как в данной накладной существует два одинаковых вагона из-за разбивки веса. Иначе требуется посчитать количество вагнов в одной накладной.    
Мне нужен какой то инструмент, который при обнаружении в одной накладной повторяющихся вагонов учитывал этот фактор при получении окончательного результата.  
Общий массив данных более 10 тыс. строк поэтому предложение "KukLP" не подходит для решения данной задачи
 
Сводная? Для такого объема данных, по моему, самое оптимальное решение.  
Если формулами: вспомогательную формулу в доп. столбец  
=ЕСЛИ(A2=A3;ЕСЛИ(C2<>C3;A2))  
Только для варианта, когда одинаковые номера вагонов рядом.
 
Спасибо "vikttur" ваша формула неплохая, но имеет недостаток.  
1. Протягивая данную формулу (см.файл)выдает ошибку на границе между разными накладными соответственно неверный результат.    
2. Результат должен быть числовым. Цель получить результат "22"  
Может как нибудь можно скрестить вашу формулу с формулой ЕСЛИ(E1=E2;"";СЧЁТЕСЛИ($E$2:$E$27;E2))или иной формулой.  
Заранее благодарен.
 
По первому вопросу. Моя невнимательность:  
=ЕСЛИ(A2<>A3;A2;ЕСЛИ(A2=A3;ЕСЛИ(C2<>C3;A2;ЕСЛИ(A2>A3;ЕСЛИ(C2<>C3;A2)))))  
По второму вопросу. Ваша невнимательность. В столбце остается нужное количество накладных.  
=СЧЕТЕСЛИ()
 
Спасибо "vikttur" формула идеальна. Однако при применении формулы =СЧЕТЕСЛИ()возникают ошибки результат "22" повторяется дважды, после "ЛОЖЬ" по одной и той же накладной. Возможно я что то не так делаю!? Подскажите пожалуйста.  
Учитывая ваш колоссальный опыт в экселе можно две формулы объедение в одну или это не возможно!?
 
Может быть так:  
1 - в доп. столбце объединяем накладные и вагоны  
2 - по этому столбцу удаляем дубликаты  
3 - считаем количество повторов уникальных по столбцу накладных любым способом.  
 
Можно всё сделать макросом, или половина на половину - дубликаты удалить вручную, накладные можно посчитать макросом из темы    
http://www.planetaexcel.ru/forum.php?thread_id=26105  
тоже чуть приложив руки (нужно правее сделать столбец с единицами).  
Получим общее количество накладных (по количеству строк) и количество их повторов.  
Весь процесс должен пройти без тормозов.  
Если я конечно правильно понял задачу.
 
См. варианты.
 
Уважаемый "vikttur" большое Вам человеческое спасибо.  
Вы очень меня выручили.
 
А как это будет практически на 10000 строк?  
По моему варианту и на 100000 в общем реально сделать за минуту-две.  
И даже если нет 2007 - то всё можно сделать в два приёма упомянутым макросом - сперва считаем все номера|вагоны, потом меняем всё количество снова на 1 , разбиваем их по столбцам и считаем ещё раз.
 
Не знаю. Формулы достаточно легкие.  
Каскад ЕСЛИ() обрезает ненужные вычисления.  
Самая медленная часть:  
ЕЧИСЛО(ПОИСКПОЗ(E2;$E$1:E1;)), т.к. вычисляется в каждой строке. Насколько медленная - не проверял, пусть автор расскажет :)
 
Вчера практически аналогичный вопрос подняли на SQL.ru - там с подачи AndreTM (вернее это его идея и строка sql) родилось такое решение:  
 
1. Файл post_357094.xlsx сохраняем как C:\Temp\vagoni.xls (путь и xls не принципиально, просто у меня через конвертер с xlsx не работает).  
2. Текстовый файл с таким содержимым  
 
 
 
XLODBC  
1  
DSN=Excel Files;DBQ=C:\Temp\vagoni.xls;DefaultDir=C:\Temp;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;  
SELECT накладная, count(*) as количество FROM (SELECT DISTINCT `Лист1$`.накладная, `Лист1$`.вагоны FROM `C:\Temp\vagoni.xls`.`Лист1$` `Лист1$`) GROUP BY накладная  
 
 
сохраняем под любым именем с расширением dqy (я проверял на ZaprosNakladnih(po_vagoni.xls).dqy), даблкликом запускаем, разрешаем подключиться к данным.  
3. Готово.
Страницы: 1
Читают тему
Наверх