Курилка Ошибка в функции Excel СУММЕСЛИ()

Тема в разделе "Курилка", создана пользователем gamser, 11 окт 2007.

  1. TopicStarter Overlay
    gamser
    Offline

    gamser Опытный в 1С

    Регистрация:
    27 окт 2006
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Вчера нашел ошибку :))
    При некоторых условиях функция СУММЕСЛИ возвращает неверный результат
    Условия следующие:
    Объявляем колонку текстовым типом
    например колонку А
    Вносим в колонку значения:
    20.1
    20.2
    20.3
    20.01
    20.02
    20.03
    В принципе так записываются счета бухучета, на чем и поймал косяк :))
    В колонку В пишем
    1
    2
    2
    4
    5
    6

    В колонке С вносим формулы
    =СуммЕсли(A1:A6;"=20.1";B1:B6)
    =СуммЕсли(A1:A6;"=20.2";B1:B6)
    =СуммЕсли(A1:A6;"=20.3";B1:B6)
    =СуммЕсли(A1:A6;"=20.01";B1:B6)
    =СуммЕсли(A1:A6;"=20.02";B1:B6)
    =СуммЕсли(A1:A6;"=20.03";B1:B6)

    И наслаждаемся результатом

    Бред во ВСЕХ версиях EXCEL!!!! :unsure:
    Микрософту написал письмо и позвонил;)
    Обещали исправить в следующем выпуске заплатки
    на просьбу о подарке - посмеялись :)))
    Сергей Гамзиков
  2. 1Yes
    Offline

    1Yes

    Регистрация:
    15 сен 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Не понимаю, в чем косяк? Всё работает как надо!
    Выдает:

    1
    2
    ...
    6

    т.е. сумму значений второго столбца если в первом столбце условие совпало.
    Причем если вводить "20.1" то ставится 20 марта! Может у тебя из-за этого косяк?
  3. TopicStarter Overlay
    gamser
    Offline

    gamser Опытный в 1С

    Регистрация:
    27 окт 2006
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Для того чтобы написать в поле 20.1 ЧЕРЕЗ ТОЧКУ
    Сделай столбец текстовым
    Выдели столбец Формат-Ячейки на закладке число выбери текстовый и нажми ОК
    Потом вводи 20.1 и т.д. именно через ТОЧКУ
    Иначе ввести строку в ввиде бух счета не удастся.
    Общий формат тут же преобразуется в формат даты типа 20 янв.
    Именно при этих условиях лезет лажа
  4. TopicStarter Overlay
    gamser
    Offline

    gamser Опытный в 1С

    Регистрация:
    27 окт 2006
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Вот пример

    Вложения:

  5. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    А в чём ошибка-то? В том, что суммирует неправильно? Дык он вообще не должен суммировать! читаем хелп:
    "...ячейки, содержащие текстовые значения, не учитываются..."
    Код:
    Синтаксис
    
    СУММЕСЛИ(диапазон;условия;диапазон_суммирования)
    
    Диапазон — диапазон ячеек, оцениваемый по условиям. Ячейки в каждом диапазоне должны содержать числа, имена, массивы или ссылки, содержащие числа. Пустые ячейки и ячейки, содержащие текстовые значения, не учитываются.
    
    
    Подозреваю, что возникнет вопрос по поводу:
    Код:
    Условия   — критерий в форме числа, выражения или текста, определяющий, какие ячейки должны суммироваться. Например, аргумент «условие» может быть выражен как 32, "32", ">32" или "яблоки".
    
    Так вот - "яблоки" записаны в общем формате, а не текстовом.
  6. 1Yes
    Offline

    1Yes

    Регистрация:
    15 сен 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    чего-то я такого не нашел.
    Короче проблема вся в том что формула преобразует данные из диапазона в то что хочет (дата), а не в то что указано (текст). Если ввести несуществующую дату (например 32.1 и 32.01), то все работает нормально
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Вот скринщот справки. Посмотреть вложение 429
    Проблема, предположительно, в том, что попытка перевести в число происходит - получается число "типа дата" :) из-за этого фигня и лезет.

    ЗЫ. Немного поковырявшись, нашёл такую вещь - функция считает значение полей 20.х = 20.0х одинаковыми. Отсюда и фишка идёт - складываются суммы этих полей. (За что отвечает диапазон суммирования - он складывает сумму ячеек, где условие выполняется)
    Короче - читайте внимательнее хелп, хотя бага мелкомягких тоже есть - функция должна выдавать значение неопределено, а не пытаться считать что-то.

    Вложения:

    • хелп.gif
      хелп.gif
      Размер файла:
      17 КБ
      Просмотров:
      169

Поделиться этой страницей