Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2010, 09:17   #1
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию Сумма через строку

Прошу помощь в оптимизации функции суммирования ячеек через строчку:

{=СУММ(ЕСЛИ(ОКРУГЛ(СТРОКА(R[-171]C:R[-2]C)/2;0)=СТРОКА(R[-171]C:R[-2]C)/2;R[-171]C:R[-2]C;0))}

или так:
Код:
=СУММ(
    ЕСЛИ(
        ЕСЛИ(
            ЕЧЁТН(СТРОКА(RC));
            ЕЧЁТН(СТРОКА(R[-47]C:R[-2]C));
            ЕНЕЧЁТ(СТРОКА(R[-47]C:R[-2]C))
        );
        R[-47]C:R[-2]C;
        0
    )
 )
файл примера прилагаю.
Вложения
Тип файла: zip Пример.zip (30.2 Кб, 33 просмотров)
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 26.08.2010, 09:55   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Можно вот так:

=СУММПРОИЗВ((СТРОКА(H11:H180)=ЧЁТН( СТРОКА(H11:H180)))*H11:H180)

=СУММПРОИЗВ((СТРОКА(H11:H180)=НЕЧЁТ (СТРОКА(H11:H180)))*H11:H180)
nilem вне форума Ответить с цитированием
Старый 26.08.2010, 10:34   #3
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Спасибо. Но всё равно те же самые три диапазона и менее универсально, чем мой вариант.
Вариант с макросом не предлагать!
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 26.08.2010, 10:58   #4
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Новая идея:
{=СУММ(ЕСЛИ(ЕЧЁТН(СТРОКА(RC))=ЕЧЁТН (СТРОКА(R[-171]C:R[-2]C));R[-171]C:R[-2]C;0))}

Код:
=СУММ(
    ЕСЛИ(
        ЕЧЁТН(СТРОКА(RC))=ЕЧЁТН(СТРОКА(R[-171]C:R[-2]C));
        R[-171]C:R[-2]C;
        0
    )
 )
Только 2 диапазона
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 26.08.2010, 10:59   #5
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Можно так:
Код:
=СУММ(ЕСЛИ(ЕТЕКСТ(R11C4:R180C4);R11C7:R180C7))
Формула массива.
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 26.08.2010, 11:05   #6
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Для Serge 007, интересный вариант. А теперь попробуй скопировать формулу из ячейки в ячейку...
Мой интерес именно в универсальности формулы, чтобы не править её каждый раз при переходе к другой ячейке
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 26.08.2010, 11:34   #7
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Skif-F Посмотреть сообщение
Для Serge 007, интересный вариант. А теперь попробуй скопировать формулу из ячейки в ячейку...
Мой интерес именно в универсальности формулы, чтобы не править её каждый раз при переходе к другой ячейке
Я может чего не понял, но вопрос топика был такой:
"Прошу помощь в оптимизации функции суммирования ячеек через строчку"Вы забыли упомянуть про то что надо сделать её универсальной?

По теме: меняем стиль ссылок и убираем доллары где необходимо.
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 26.08.2010, 12:05   #8
ZORRO2005
Форумчанин
 
Аватар для ZORRO2005
 
Регистрация: 26.11.2006
Сообщений: 584
По умолчанию

=СУММ(ЕСЛИ(НЕ(ОСТАТ(СТРОКА(H11:H180 );2));H11:H180))
Формула массива
ZORRO2005 вне форума Ответить с цитированием
Старый 26.08.2010, 12:12   #9
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Для Serge 007.
Но даже в этом случае не универсальный. Этот пример работает для строки 182, а для 181 сработает неправильно (потребуется менять ЕТЕКСТ на ЕНЕТЕКСТ)
Да, про универсальность не сказал, прошу прощения. Я считал, что по примеру кода будут понятны требования, хотя и мой вариант не совсем универсальный.

Очередное моё решение:
Цитата:
=СУММ(
ЕСЛИ(
ЕЧЁТН(СТРОКА(RC)+СТРОКА(R[-171]C:R[-2]C));
R[-171]C:R[-2]C
)
)
Счёт ведётся, опираясь на номер строки своей ячейки. Если номер строки чётный, то суммируем чётные строки, если нечётный, то нечётные
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 26.08.2010, 12:15   #10
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

для ZORRO2005
=СУММ(ЕСЛИ(ЕЧЁТН(СТРОКА(H11:H180 )));H11:H180))
будет чуть-чуть попроще
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка почты из Excel через командную строку zao Microsoft Office Excel 3 06.08.2010 12:10
выборка через строку romanova Microsoft Office Excel 12 18.12.2009 11:29
[Pascal] сумма чисел входящих в строку Рамик Помощь студентам 5 03.06.2009 16:28
Как при нажатии на строку в Listbox передавать нажатую строку в переменную Михаил Юрьевич Общие вопросы Delphi 5 16.03.2009 12:59
Передача хэндла через командную строку MaTBeu Win Api 9 29.11.2008 15:30