СУММ vs ДЕЛ/0!

Программирование на Visual Basic for Applications
NORDman
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.07.2008 (Ср) 0:17

СУММ vs ДЕЛ/0!

Сообщение NORDman » 02.07.2008 (Ср) 0:42

Здравствуйте, уважаемые!
Перелопатил немало инфы, но решения так и не нашёл. Помогите пожалуйста решить вопрос.
WinXP Sp2 MS Excel 2003
Суть вот в чём:
Рабочий лист, столбец содержит ячейки, формулы в которых пересчитывают данные содержащиеся в влияющих ячейках. Необходимо суммировать данные в этом столбце, которые будут участвовать в дальнейших вычислениях. Всё вроде бы просто, но столбец содержит ячейки, в которых нет целого числа пригодного для вычисления, т.е. ещё не все данные введены в влияющих ячейках, имеем #ДЕЛ/0! Вот тут-то и застрял. Как мне заставить Excel игнорировать эти ячейки?
Примерно это выглядит так:
Код: Выделить всё
=B14-СУММ(A2:A7)
-----------------
1
1
1
#ДЕЛ/0!
#ДЕЛ/0!
#ДЕЛ/0!
Должно получаться (B14=10) 10-3=7

В ячейке, где должна быть сумма диапазона отображается #ДЕЛ/0!
Диапазон нужно просуммировать и получившуюся сумму отнять от другого числа. До ячейки содержащей #ДЕЛ/0! всё работает, дальше нет.
В целевом столбце содержится 12 строк и мне нужна их сумма, по мере поступления данных.
Заранее большое спасибо, очень надеюсь на Вашу помощь.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 02.07.2008 (Ср) 7:05

можно в ячейках, в которых стоит операция деления проверять на ошибку

Код: Выделить всё
=ЕСЛИ(ЕОШ(A2/B2);0;A2/B2)
I Have Nine Lives You Have One Only
THINK!

NORDman
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.07.2008 (Ср) 0:17

Сообщение NORDman » 02.07.2008 (Ср) 20:04

Т.е. Для нужного мне результата, необходимо подогнать всё остальное, под критерии соответствующие встроенным параметрам СУММ()? И иного пути решения проблемы не существует? Т.е. в экселе невозможно игнорировать ячейку с ошибкой... Глупо...
Даже стандартная функция сложения ( в строке состояния), при протяжке в режиме суммирования, выдаёт сумму ТОЛЬКО до ячейки с ошибкой... Напрашивается вывод, что это ограничения редактора (программы целиком) и нужны вливания в масштабе полного переливания крови....
Мастера! Есть ещё мнения?! Хелп ми плиззз. Вопрос не жизненно важен, но актуален, не бывает, что решить не возможно, всегда находится решение, которое даже в страшном сне не могло работать... Но работает... Подскажите, или пните в нужном направлении...
Спасибо.
--------------------------------------
to HandKot
А фигли тут думать...
У меня одна, но бесконечна, твои девять смогут потягаться с моей одной?....
think too..................
Целую. Дунькин Маклауд.
Или ты просто... кошка?

NORDman
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.07.2008 (Ср) 0:17

Сообщение NORDman » 03.07.2008 (Чт) 0:39

HandKot
Изучил, попробовал, привинтил всё по местам--> Работает. Спасибо!
Я пробовал твой вариант раньше, но пропарился со скобками (много у меня цифр в листе и задач не меньше, голова крУгом), да и логики не понял, поэтому не стал развивать, щас добил. Щастье, мать его...
Я с экселем-постольку поскольку, всё больше в веб и железе, у меня всё практически с нуля. Ещё раз спасибо (за подзатыльник)!
С меня 100 грамм и пирожог. ;)

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 03.07.2008 (Чт) 7:16

хотьу Вас одна, но бесконечная жизнь уважаемый Дунькин Маклауд
но, не в обиду, дам совет
попробуйте использовать гугль
I Have Nine Lives You Have One Only
THINK!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 03.07.2008 (Чт) 14:08

1) =СУММЕСЛИ(A1:A100;"<>#ДЕЛ/0!")

2) =СУММ(ЕСЛИ(ЕЧИСЛО(A1:A100);A1:A100)) ввод с комб. клавишь Ctrl+Shift+Enter
Привет,
KL

NORDman
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.07.2008 (Ср) 0:17

Сообщение NORDman » 03.07.2008 (Чт) 17:19

HandKot писал(а):не в обиду, дам совет
попробуйте использовать гугль

Да конечно не в обиду, о чём речь уважаемый! :)
Дело в том, что этот макрос уже гуглил.
Мне нужен был вариант, где всё решалось бы на уровне формул.
2 KL
Мда... Нужно учить матчасть. Теперь ещё искать почему Ctrl+Shift+Enter а не просто ввод :)))
Спасибо!
Моя ситуёвина была решена так:
Код: Выделить всё
=ЕСЛИ(ЕОШ(ОКРУГЛ(R31*(((100-(W31+X15+Z15))/100)*(S15/1000));0));"0";(ОКРУГЛ(R31*(((100-(W31+X15+Z15))/100)*(S15/1000));0)))


Работает.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 03.07.2008 (Чт) 17:46

NORDman писал(а):Мда... Нужно учить матчасть. Теперь ещё искать почему Ctrl+Shift+Enter а не просто ввод :)))

Формулы массива 0
Формулы массива 1
Формулы массива 2

NORDman писал(а):Моя ситуёвина была решена так:
Код: Выделить всё
=ЕСЛИ(ЕОШ(ОКРУГЛ(R31*(((100-(W31+X15+Z15))/100)*(S15/1000));0));"0";(ОКРУГЛ(R31*(((100-(W31+X15+Z15))/100)*(S15/1000));0)))

Эта формула явно оптимизируема, но нужно иметь перед глазами конкретный пример. Например первое, что приходит на ум:
Код: Выделить всё
=ЕСЛИ(ЕОШИБКА(СУММ(R31;W31;X15;Z15;S15));0;(ОКРУГЛ(R31*(((100-(W31+X15+Z15))/100)*(S15/1000));0)))

Ноль в кавычках ставить незачем.
Привет,
KL

NORDman
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.07.2008 (Ср) 0:17

Сообщение NORDman » 04.07.2008 (Пт) 17:14

KL писал(а):
Код: Выделить всё
=ЕСЛИ(ЕОШИБКА(СУММ(R31;W31;X15;Z15;S15));0;(ОКРУГЛ(R31*(((100-(W31+X15+Z15))/100)*(S15/1000));0)))


Спасибо маэстро, просто и изящно :)
И решение лежало на поверхности, нужно было только чуть внимательнее читать тот-же help по функциям... (ещё один подзатыльник.. голова уже в шишках :) )
То, что я делаю-это режимный лист, для операторов небольшой нефтяной компании.
Можно было бы сделать всё по уму и не просто в экселе... НО... За бесплатно такое делать нет смысла и желания. Хотя самолюбие заставляет сделать его удобнее, информативнее и надёжнее...
Задумок много, поле деятельности велико, стимула маловато...
Изначально делалось как альтернатива калькулятору, потом немного разрослось...
Если интересно посмотреть, что это за такое, могу выслать. Куда? Выкладывать в общий доступ не хочется, куски кода писать-нет смысла.
Ещё раз огромное спасибо, за отклик и реальную помощь. Честно говоря, ожидал, что меня начнут тупо тыкать носом в яндексы и гугли... Был приятно разочарован.
Спасибо!

NORDman
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.07.2008 (Ср) 0:17

Сообщение NORDman » 04.07.2008 (Пт) 19:35

Есть ещё вопрос. Не знаю, как лучше сделать.
Есть рабочая книга "1", есть файл "2" (*.xls;*.csv;*.txt как лчше?) в котором содержится ряд цифр в одном/двух столбцах.
При вводе в нужную ячейку книги "1" числа, нужно чтобы автоматически из файла "2" подставлялось его значение.
Например:
В книге "1" ячейка B2 - записываем число 20,
в файле "2" строка 20 содержит значение 18,6
Нужно в книге "1" в ячейке D2 получить значение 18,6
При этом не открывая файл "2". И не добавлять его листом в рабочую книгу "1" (вес файла и книги имеет значение).
Или же создать базу в Access? Тогда как её связать с Excel?
Или же писать макрос, но как подключить данные...
Вот... Проблема.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 05.07.2008 (Сб) 1:43

Если искомое значение находится в столбце [A:A] листа 1 файла 2, то в ячейке [D2] файла 1 пишем например такое:

=ИНДЕКС('C:\[Файл2.xls]Лист1'!$A:$A;B2)
Привет,
KL

NORDman
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.07.2008 (Ср) 0:17

Сообщение NORDman » 05.07.2008 (Сб) 2:14

И по аналогии с приведённым примером можно сделать и

=ИНДЕКС('C:\[Файл2.xls]Лист1'!$B:$B;G2)
=ИНДЕКС('C:\[Файл2.xls]Лист1'!$C:$C;L2)?

Столкнулся с такой проблемой:
Добавил те значения, которые нужно подставлять на последний лист в книге (1050 строк х 3столбца) И теперь при сохранении мне пэксель пишет: Документ не сохранён... Ново, дико, не понятно... Удаляю лист - сохраняет. Превышен какой-то лимит?

NORDman
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.07.2008 (Ср) 0:17

Сообщение NORDman » 05.07.2008 (Сб) 3:04

Вот я валенок! О_о Бу-га-га
Сводки на приватном диске (Private Disk Light) и на нём тупо небыло места... Теперь сохраняется... Мдаааа.
KL Работает! Огромное человеческое тебе спасибо.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList