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

Вход

Регистрация

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

 

= Мир MS Excel/Судоку формулами. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Судоку формулами.
VictorK Дата: Воскресенье, 15.12.2013, 15:13 | Сообщение № 1
Группа: Проверенные
Ранг: Прохожий
Сообщений: 8
Репутация: 1 ±
Замечаний: 0% ±

Здравствуйте!
Недавно я, несмотря на имеющиеся в Интернете варианты решения головоломки Судоку, захотел найти собственное решение. В общем-то всё получилось, но на этапе "доводки", когда стал избавляться от дополнительных столбцов с расчётами, главная формула вдруг выдала ошибку #ЗНАЧ!
Многократные проверки формулы показали, что отдельные фрагменты работают без ошибок и только объединенные в одну большую формулу приводят к появлению ошибки.
Хотелось бы услышать мнение специалистов Excel по этому поводу.

Поскольку полное описание проблемы требует довольно много текста, поместил его в прилагаемый файл.

Вот сама формула:
Код
=СУММПРОИЗВ((СМЕЩ($A$1;ЦЕЛОЕ((СТРОКА()-13)/9);(СТРОКА()-13)-9*ЦЕЛОЕ((СТРОКА()-13)/9);;)="")*
(НЕ(СЧЁТЕСЛИ(СМЕЩ($A$1;ЦЕЛОЕ((СТРОКА()-13)/27)*3;ЦЕЛОЕ((СТРОКА()-13-9*ЦЕЛОЕ((СТРОКА()-13)/9))/3)*3;3;3);СТОЛБЕЦ())=1))*
(НЕ(СЧЁТЕСЛИ(СМЕЩ($A$1;ЦЕЛОЕ((СТРОКА()-13)/9);;;9);СТОЛБЕЦ())=1))*
(НЕ(СЧЁТЕСЛИ(СМЕЩ($A$1;;ЦЕЛОЕ(СТРОКА()-13-9*ЦЕЛОЕ((СТРОКА()-13)/9));9;);СТОЛБЕЦ())=1))*СТОЛБЕЦ())


Ошибку вызывают два фрагмента в первой строке формулы (аргументы функции СМЕЩ "смещение по строкам" и "смещение по столбцам"):
ЦЕЛОЕ((СТРОКА()-13)/9) и (СТРОКА()-13)-9*ЦЕЛОЕ((СТРОКА()-13)/9)
Если эти фрагменты вывести в отдельные вспомогательные столбцы, а в формулу поместить ссылки на эти столбцы, тогда всё работает...

Изображение окна "Вычислить формулу" непосредственно перед появлением ошибки и следующего шага с ошибкой:
К сообщению приложен файл: Sudoq.xlsx (28.9 Kb)


Сообщение отредактировал VictorK - Воскресенье, 15.12.2013, 15:15
 
Ответить
СообщениеЗдравствуйте!
Недавно я, несмотря на имеющиеся в Интернете варианты решения головоломки Судоку, захотел найти собственное решение. В общем-то всё получилось, но на этапе "доводки", когда стал избавляться от дополнительных столбцов с расчётами, главная формула вдруг выдала ошибку #ЗНАЧ!
Многократные проверки формулы показали, что отдельные фрагменты работают без ошибок и только объединенные в одну большую формулу приводят к появлению ошибки.
Хотелось бы услышать мнение специалистов Excel по этому поводу.

Поскольку полное описание проблемы требует довольно много текста, поместил его в прилагаемый файл.

Вот сама формула:
Код
=СУММПРОИЗВ((СМЕЩ($A$1;ЦЕЛОЕ((СТРОКА()-13)/9);(СТРОКА()-13)-9*ЦЕЛОЕ((СТРОКА()-13)/9);;)="")*
(НЕ(СЧЁТЕСЛИ(СМЕЩ($A$1;ЦЕЛОЕ((СТРОКА()-13)/27)*3;ЦЕЛОЕ((СТРОКА()-13-9*ЦЕЛОЕ((СТРОКА()-13)/9))/3)*3;3;3);СТОЛБЕЦ())=1))*
(НЕ(СЧЁТЕСЛИ(СМЕЩ($A$1;ЦЕЛОЕ((СТРОКА()-13)/9);;;9);СТОЛБЕЦ())=1))*
(НЕ(СЧЁТЕСЛИ(СМЕЩ($A$1;;ЦЕЛОЕ(СТРОКА()-13-9*ЦЕЛОЕ((СТРОКА()-13)/9));9;);СТОЛБЕЦ())=1))*СТОЛБЕЦ())


Ошибку вызывают два фрагмента в первой строке формулы (аргументы функции СМЕЩ "смещение по строкам" и "смещение по столбцам"):
ЦЕЛОЕ((СТРОКА()-13)/9) и (СТРОКА()-13)-9*ЦЕЛОЕ((СТРОКА()-13)/9)
Если эти фрагменты вывести в отдельные вспомогательные столбцы, а в формулу поместить ссылки на эти столбцы, тогда всё работает...

Изображение окна "Вычислить формулу" непосредственно перед появлением ошибки и следующего шага с ошибкой:

Автор - VictorK
Дата добавления - 15.12.2013 в 15:13
Serge_007 Дата: Воскресенье, 15.12.2013, 22:21 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Вникать некогда, поэтому ссылка http://www.excelworld.ru/forum/2-6115-1#61114


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеВникать некогда, поэтому ссылка http://www.excelworld.ru/forum/2-6115-1#61114

Автор - Serge_007
Дата добавления - 15.12.2013 в 22:21
VictorK Дата: Воскресенье, 15.12.2013, 22:40 | Сообщение № 3
Группа: Проверенные
Ранг: Прохожий
Сообщений: 8
Репутация: 1 ±
Замечаний: 0% ±

Спасибо, Сергей. Я эту тему читал и файлы смотрел. Но меня больше интересует другое - почему правильная формула выдаёт ошибку.
Видимо, с подобным мало кому пришлось сталкиваться на практике. Наверное, какая нибудь внутренняя ошибка Excel.

Предельно упростил формулу, оставил только проблемный участок:
Код
=СУММПРОИЗВ((СМЕЩ(A1;СТРОКА();;;))*1)

На пустой лист вставляю эту формулу в любую ячейку и получаю #ЗНАЧ!
Отдельно СМЕЩ(A1;СТРОКА();;;) прекрасно работает, а в качестве аргумента СУММПРОИЗВ вдруг становится источником ошибки, причём ошибку вызывает именно СТРОКА()


Сообщение отредактировал VictorK - Понедельник, 16.12.2013, 12:20
 
Ответить
СообщениеСпасибо, Сергей. Я эту тему читал и файлы смотрел. Но меня больше интересует другое - почему правильная формула выдаёт ошибку.
Видимо, с подобным мало кому пришлось сталкиваться на практике. Наверное, какая нибудь внутренняя ошибка Excel.

Предельно упростил формулу, оставил только проблемный участок:
Код
=СУММПРОИЗВ((СМЕЩ(A1;СТРОКА();;;))*1)

На пустой лист вставляю эту формулу в любую ячейку и получаю #ЗНАЧ!
Отдельно СМЕЩ(A1;СТРОКА();;;) прекрасно работает, а в качестве аргумента СУММПРОИЗВ вдруг становится источником ошибки, причём ошибку вызывает именно СТРОКА()

Автор - VictorK
Дата добавления - 15.12.2013 в 22:40
ZetMenChavo Дата: Четверг, 11.11.2021, 21:02 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 165
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
VictorK, Прив) Не знаю, не пропал ли ещё интерес к этому вопросу или может ответ уже сами нашли за 8 лет, да и не факт что загляните, но раз ответа так и не дали, то напишу его я для тех кто тоже наткнется на эту тему.

Дело в том что СУММПРОИЗВ подобно АГРЕГАТу рассчитывает формулы внутри себя как массивы, даже если в таких формулах как СТРОКА и СТОЛБЕЦ выделена всего одна ячейка, при вычислении они считаются массивом, что хорошо видно по фигурным скобкам по бокам числа 13 на картинке, которое получилось в результате вычисления строки.

А СМЕЩ не вычисляется когда в её параметрах смещения по строкам и столбцам есть массивы, она тогда выдает ошибку.

Решить это легко, надо вместо СТРОКА и СТОЛБЕЦ использовать формулу ЯЧЕЙКА("строка";A1) ЯЧЕЙКА("столбец";A1), в ней тоже есть возможность выдавать номер строки и стобца, но при этом она не превращает результат в массив. Собственно вот и ответ.


Сообщение отредактировал ZetMenChavo - Четверг, 11.11.2021, 21:03
 
Ответить
СообщениеVictorK, Прив) Не знаю, не пропал ли ещё интерес к этому вопросу или может ответ уже сами нашли за 8 лет, да и не факт что загляните, но раз ответа так и не дали, то напишу его я для тех кто тоже наткнется на эту тему.

Дело в том что СУММПРОИЗВ подобно АГРЕГАТу рассчитывает формулы внутри себя как массивы, даже если в таких формулах как СТРОКА и СТОЛБЕЦ выделена всего одна ячейка, при вычислении они считаются массивом, что хорошо видно по фигурным скобкам по бокам числа 13 на картинке, которое получилось в результате вычисления строки.

А СМЕЩ не вычисляется когда в её параметрах смещения по строкам и столбцам есть массивы, она тогда выдает ошибку.

Решить это легко, надо вместо СТРОКА и СТОЛБЕЦ использовать формулу ЯЧЕЙКА("строка";A1) ЯЧЕЙКА("столбец";A1), в ней тоже есть возможность выдавать номер строки и стобца, но при этом она не превращает результат в массив. Собственно вот и ответ.

Автор - ZetMenChavo
Дата добавления - 11.11.2021 в 21:02
  • Страница 1 из 1
  • 1
Поиск:

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