Всем ПРИВЕТ) Нужна помощь. есть БД строк довольно много ~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]А файл где?
Всем ПРИВЕТ) Нужна помощь. есть БД строк довольно много ~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
а дальше что?.. просто глазами посмотреть или куда-то в другую формулу пойдёт? если первое - то сводная таблица, если второе - то тоже можно, но есть нюансы.
а без примера файла другой ответ вы вряд ли получите...
а дальше что?.. просто глазами посмотреть или куда-то в другую формулу пойдёт? если первое - то сводная таблица, если второе - то тоже можно, но есть нюансы.
а без примера файла другой ответ вы вряд ли получите...ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
хочется реализовать следующий алгоритм: 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
Вы же сами говорите, что формула на таком кол-ве строк тормозит, поэтому я и предложила с доп. столбцом, который можно скрыть при желании. Одной формулой
Код
=СУММПРОИЗВ((C9:C16<>C8:C15)*(D9:D16="x"))
Вы же сами говорите, что формула на таком кол-ве строк тормозит, поэтому я и предложила с доп. столбцом, который можно скрыть при желании. Одной формулой