Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Подсчет ячеек по двум условиям EXCEL2003 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Подсчет ячеек по двум условиям EXCEL2003 (Формулы/Formulas)
Подсчет ячеек по двум условиям EXCEL2003
HiHiMAX Дата: Пятница, 10.07.2015, 12:59 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Всем ПРИВЕТ)
Нужна помощь.
есть БД строк довольно много ~60000. Есть поле "ID" - значения числовые, не уникальные, повторяющиеся сгруппированы вместе, могут быть пустые ячейки, например: "12,12,12,17,17,19,33,33,33,33,33,,,51".
Есть поле "name" - текст, повторяющиеся значения, например: "y,y,y,x,x,y,y,y,y,y,y"
Любой группе "ID" соответствует одно из значений x,y,z ....
нужно подсчитать сколько всего групп ID с name=x
Сейчас я считаю так:
=СУММПРОИЗВ(1/(СЧЁТЕСЛИ(R[38]C[-1]:R[60171]C[-1];""&R[38]C[-1]:R[60171]C[-1]));--(R[38]C[5]:R[60171]C[5]="x"))
это занимает довольно много времени, к тому же подобных выборок будет много - ексель может повиснуть.
Можно ли как-то упростить вычисления, пользуясь тем, что все группы ID сгруппированы между собой. Проверить наличие признака X только в первой ячеейке из группы.
у меня ексель 2003.
Надеюсь понятно описал суть вопроса.
[moder]А файл где?
К сообщению приложен файл: _Microsoft_Exce.xls (14.0 Kb)


Сообщение отредактировал HiHiMAX - Пятница, 10.07.2015, 13:52
 
Ответить
СообщениеВсем ПРИВЕТ)
Нужна помощь.
есть БД строк довольно много ~60000. Есть поле "ID" - значения числовые, не уникальные, повторяющиеся сгруппированы вместе, могут быть пустые ячейки, например: "12,12,12,17,17,19,33,33,33,33,33,,,51".
Есть поле "name" - текст, повторяющиеся значения, например: "y,y,y,x,x,y,y,y,y,y,y"
Любой группе "ID" соответствует одно из значений x,y,z ....
нужно подсчитать сколько всего групп ID с name=x
Сейчас я считаю так:
=СУММПРОИЗВ(1/(СЧЁТЕСЛИ(R[38]C[-1]:R[60171]C[-1];""&R[38]C[-1]:R[60171]C[-1]));--(R[38]C[5]:R[60171]C[5]="x"))
это занимает довольно много времени, к тому же подобных выборок будет много - ексель может повиснуть.
Можно ли как-то упростить вычисления, пользуясь тем, что все группы ID сгруппированы между собой. Проверить наличие признака X только в первой ячеейке из группы.
у меня ексель 2003.
Надеюсь понятно описал суть вопроса.
[moder]А файл где?

Автор - HiHiMAX
Дата добавления - 10.07.2015 в 12:59
mechanix85 Дата: Пятница, 10.07.2015, 13:01 | Сообщение № 2
Группа: Друзья
Ранг: Форумчанин
Сообщений: 240
Репутация: 34 ±
Замечаний: 0% ±

зря надеетесь
 
Ответить
Сообщениезря надеетесь

Автор - mechanix85
Дата добавления - 10.07.2015 в 13:01
ikki Дата: Пятница, 10.07.2015, 13:06 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
нужно подсчитать
а дальше что?.. просто глазами посмотреть или куда-то в другую формулу пойдёт?
если первое - то сводная таблица,
если второе - то тоже можно, но есть нюансы.

а без примера файла другой ответ вы вряд ли получите...


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
нужно подсчитать
а дальше что?.. просто глазами посмотреть или куда-то в другую формулу пойдёт?
если первое - то сводная таблица,
если второе - то тоже можно, но есть нюансы.

а без примера файла другой ответ вы вряд ли получите...

Автор - ikki
Дата добавления - 10.07.2015 в 13:06
HiHiMAX Дата: Пятница, 10.07.2015, 14:24 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
зря надеетесь

хочется реализовать следующий алгоритм:
1. в диапазоне ID проверяем равно ли значение в текущей ячейке значению предыдущей
2. если не равно, в диапазоне name проверяем, в соответствующей ячейке равно ли значение "x"
3. если значение равно "x", то счетчик +1
4. если значение не равно "x", переходим к следующей ячейке в диапазоне ID
5. в диапазоне ID проверяем равно ли значение в текущей ячейке значению предыдущей
6. если равно, переходим к следующей ячейке в диапазоне ID

если это можно реализовать в формулах, то считать будет в разы быстрее чем через =СУММПРОИЗВ(...)
 
Ответить
Сообщение
зря надеетесь

хочется реализовать следующий алгоритм:
1. в диапазоне ID проверяем равно ли значение в текущей ячейке значению предыдущей
2. если не равно, в диапазоне name проверяем, в соответствующей ячейке равно ли значение "x"
3. если значение равно "x", то счетчик +1
4. если значение не равно "x", переходим к следующей ячейке в диапазоне ID
5. в диапазоне ID проверяем равно ли значение в текущей ячейке значению предыдущей
6. если равно, переходим к следующей ячейке в диапазоне ID

если это можно реализовать в формулах, то считать будет в разы быстрее чем через =СУММПРОИЗВ(...)

Автор - HiHiMAX
Дата добавления - 10.07.2015 в 14:24
Pelena Дата: Пятница, 10.07.2015, 14:45 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19195
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
Вариант с доп. столбцом
К сообщению приложен файл: 4351589.xls (21.5 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВариант с доп. столбцом

Автор - Pelena
Дата добавления - 10.07.2015 в 14:45
HiHiMAX Дата: Пятница, 10.07.2015, 14:54 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Вариант с доп. столбцом

:) спасибо за ответ,
да, именно так и надо,
НО как это реализовать в одной ячейке и через формулы?
 
Ответить
Сообщение
Вариант с доп. столбцом

:) спасибо за ответ,
да, именно так и надо,
НО как это реализовать в одной ячейке и через формулы?

Автор - HiHiMAX
Дата добавления - 10.07.2015 в 14:54
_Boroda_ Дата: Пятница, 10.07.2015, 14:56 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вариант одной формулой. Должен быть быстрее Вашего, но, возможно, медленнее Лениного
Код
=СУММПРОИЗВ((C9:C16<>C8:C15)*(D9:D16=G8))

В G8 - нужная буква
К сообщению приложен файл: 4351589_1.xls (27.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВариант одной формулой. Должен быть быстрее Вашего, но, возможно, медленнее Лениного
Код
=СУММПРОИЗВ((C9:C16<>C8:C15)*(D9:D16=G8))

В G8 - нужная буква

Автор - _Boroda_
Дата добавления - 10.07.2015 в 14:56
Pelena Дата: Пятница, 10.07.2015, 14:59 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19195
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
Вы же сами говорите, что формула на таком кол-ве строк тормозит, поэтому я и предложила с доп. столбцом, который можно скрыть при желании.
Одной формулой
Код
=СУММПРОИЗВ((C9:C16<>C8:C15)*(D9:D16="x"))


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВы же сами говорите, что формула на таком кол-ве строк тормозит, поэтому я и предложила с доп. столбцом, который можно скрыть при желании.
Одной формулой
Код
=СУММПРОИЗВ((C9:C16<>C8:C15)*(D9:D16="x"))

Автор - Pelena
Дата добавления - 10.07.2015 в 14:59
HiHiMAX Дата: Пятница, 10.07.2015, 15:18 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
_Boroda_ спасибо
Ваше решение, то что нужно.
 
Ответить
Сообщение_Boroda_ спасибо
Ваше решение, то что нужно.

Автор - HiHiMAX
Дата добавления - 10.07.2015 в 15:18
vikttur Дата: Пятница, 10.07.2015, 15:34 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

А минусики лень дописать? :)
Код
=СУММПРОИЗВ(--(C9:C16<>C8:C15);--(D9:D16=G8))
 
Ответить
СообщениеА минусики лень дописать? :)
Код
=СУММПРОИЗВ(--(C9:C16<>C8:C15);--(D9:D16=G8))

Автор - vikttur
Дата добавления - 10.07.2015 в 15:34
ShAM Дата: Пятница, 10.07.2015, 15:37 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Лень писать по два, когда можно и по одному: :)
Код
=СУММПРОИЗВ(-(C9:C16<>C8:C15);-(D9:D16=G8))
 
Ответить
СообщениеЛень писать по два, когда можно и по одному: :)
Код
=СУММПРОИЗВ(-(C9:C16<>C8:C15);-(D9:D16=G8))

Автор - ShAM
Дата добавления - 10.07.2015 в 15:37
vikttur Дата: Пятница, 10.07.2015, 15:41 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

А так медленнее! :)
Бинарное отрицание воспринимается как оператор, а при одном минусе отрицательные значения преобразуются в положительные


Сообщение отредактировал vikttur - Пятница, 10.07.2015, 15:42
 
Ответить
СообщениеА так медленнее! :)
Бинарное отрицание воспринимается как оператор, а при одном минусе отрицательные значения преобразуются в положительные

Автор - vikttur
Дата добавления - 10.07.2015 в 15:41
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Подсчет ячеек по двум условиям EXCEL2003 (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!