Какая максимальная длина формулы в excel

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

вопрос собственно в теме… возможно ли как нибудь увеличить в ячейке длину формулы…?!  а то длина в 8192 символа не помешается…  (8192 это где то 2.5 страницы в ворд , а нужно что бы 7 было )  

Изменено: БМВ06.02.2023 20:04:17

 

Тимофеев

Пользователь

Сообщений: 1497
Регистрация: 01.09.2020

делите на 3 формулы по 8192 и четвертой собирайте итог

Изменено: Тимофеев06.02.2023 14:03:00

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#3

06.02.2023 14:07:26

Цитата
George L написал:
возможно ли как нибудь увеличить в ячейке длину формулы

например, так: добавить апостроф и посчитать функцией ДЛСТР()

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#4

06.02.2023 14:09:12

Цитата
написал:
делите на 3 формулы по 8192 и четвертой собирайте итог

вопрос то не про три -четыре ячейки, а про одну.
вообще зачем ограничение сделали такое (

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#5

06.02.2023 14:11:28

Цитата
написал:
например, так: добавить апостроф и посчитать функцией ДЛСТР()

спасибо, но длина текста в ячейке не актуальна…

просто формула очень длинная получается  

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#6

06.02.2023 14:19:44

Цитата
George L написал:
длина текста в ячейке не актуальна..

А что актуально? Мой ответ конкретно на Ваш вопрос в названии темы.
Если Вас интересует, каким образом можно обойти ограничения на длину формулы в ячейке, то и название нужно формулировать соответственно.

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#7

06.02.2023 14:22:29

Цитата
написал:
А что актуально? Мой ответ конкретно на Ваш вопрос в названии темы.Если Вас интересует, каким образом можно обойти ограничения на длину формулы в ячейке, то и название нужно формулировать соответственно.

поэтому в Теме и стоят многоточия, а в самом первом посте раскрывается тема детальнее, по аналогии с экселем и темой, тогда бы все вместо первого сообщения и писали сам вопрос именно в «теме»..

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

#8

06.02.2023 14:24:21

Цитата
George L написал:
вообще зачем ограничение сделали такое (

сделали для того чтоб не появлялось таких формул.
на форуме масса тем в которых монстры превращались в достаточно короткие формулы.

По вопросам из тем форума, личку не читаю.

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

George L,  я Вам про название темы, а Вы про стартовое сообщение.
Впредь формулируйте так, чтобы уже из названия темы была понятна задача. А по Вашей логике получается, что задача скрывается в этих трёх точках.

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#10

06.02.2023 14:36:04

Цитата
написал:
сделали для того чтоб не появлялось таких формул.на форуме масса тем в которых монстры превращались в достаточно короткие формулы.

тоже логично.
хотя по факту вот
СЧЁТЕСЛИМН (три условия) выдает значение и суммирует с подобными тремя условиями, только где «Субъект ознакомлен», и далее меняется только переменная А16 на другие поля (с другими названиями документов)
ну допустим текст «Субъект ознакомлен» и «Субъект НЕ ознакомился» я вставлю в ячейку и потом к ним буду обращаться.. это уменьшит длину где то на 35 символов в каждом цикле..

=(СЧЁТЕСЛИМН(‘[Копия
Процессуальные_документы_для_ознакомления_.xlsx]data’!$I:$I;D14;'[Копия
Процессуальные_документы_для_ознакомления_.xlsx]data’!$J:$J;db!A16;'[Копия
Процессуальные_документы_для_ознакомления_.xlsx]data’!$D:$D;»Субъект
НЕ ознакомился»))+(СЧЁТЕСЛИМН(‘[Копия
Процессуальные_документы_для_ознакомления_.xlsx]data’!$I:$I;D14;'[Копия
Процессуальные_документы_для_ознакомления_.xlsx]data’!$J:$J;db!A16;'[Копия
Процессуальные_документы_для_ознакомления_.xlsx]data’!$D:$D;»Субъект
ознакомлен»))

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#11

06.02.2023 14:44:31

Цитата
написал:
George L,  я Вам про название темы, а Вы про стартовое сообщение.
Впредь формулируйте так, чтобы уже из названия темы была понятна  задача . А по Вашей логике получается, что задача скрывается в этих трёх точках.

Уважаемый Юрий, ваше сообщение не относится к теме обсуждения в рамках проблематики excel, и это ведь немного лишнее будет обсуждение, тем более если вы отвечая на вопрос использовали кнопку «цитировать» и выделили именно вопрос не из темы, а именно из первого поста, что собственно говорит о том, что Вы прочли именно вопрос, а не тему.

А согласно моей логике я же и написал, что если опираться на озвученное Вами, ТОЛЬКО на текст в «Теме» тогда в первом посте вообще можно не писать ничего…

Ps. я благодарен Вам за желание помочь
Ps2. касательно «не актуальности» это было как раз о ДЛСТР  

Изменено: George L06.02.2023 14:51:00

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

George L,  не вставляйте скопированное — прикрепляйте рисунок файлом. Правда,  в рисунках формулы не работают.

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#13

06.02.2023 14:53:31

Цитата
написал:
George L ,  не вставляйте скопированное — прикрепляйте рисунок файлом. Правда,  в рисунках формулы не работают.

Юрий посмотрите чуть выше, я изменил уже сразу , когда рисунок вставился не корректно, а если говорить все таки про excel, а не про «цитирование» то, пример формулы приведен еще чуть выше и если обратите внимание не рисунком… :)

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#14

06.02.2023 14:54:18

Цитата
George L написал:
Уважаемый Юрий, ваше сообщение не относится к теме обсуждения в рамках проблематики excel,

Замечания модераторов по оформлению, по названию, соблюдению правил относятся к ЛЮБОЙ теме. И Вы глубоко ошибаетесь, если считаете, что в теме должны быть только ответы на Ваш вопрос.
И давайте прекратим препираться, пока медведь своей лапой не закрыл тему.

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#15

06.02.2023 15:01:02

:idea: Юрий М,

Цитата
написал:
хотя по факту вот СЧЁТЕСЛИМН (три условия) выдает значение и суммирует с подобными тремя условиями, только где «Субъект ознакомлен», и далее меняется только переменная А16 на другие поля (с другими названиями документов) ну допустим текст «Субъект ознакомлен» и «Субъект НЕ ознакомился» я вставлю в ячейку и потом к ним буду обращаться.. это уменьшит длину где то на 35 символов в каждом цикле..=(СЧЁТЕСЛИМН(‘[КопияПроцессуальные_документы_для_ознакомления_.xlsx]data’!$I:$I;D14;'[КопияПроцессуальные_документы_для_ознакомления_.xlsx]data’!$J:$J;db!A16;'[КопияПроцессуальные_документы_для_ознакомления_.xlsx]data’!$D:$D;»Субъект НЕ ознакомился»))+(СЧЁТЕСЛИМН(‘[КопияПроцессуальные_документы_для_ознакомления_.xlsx]data’!$I:$I;D14;'[КопияПроцессуальные_документы_для_ознакомления_.xlsx]data’!$J:$J;db!A16;'[КопияПроцессуальные_документы_для_ознакомления_.xlsx]data’!$D:$D;»Субъект ознакомлен»))
 

_Boroda_

Пользователь

Сообщений: 1496
Регистрация: 27.07.2013

Контакты см. в профиле

Вы пример файла приложите наконец или одно из двух?

Скажи мне, кудесник, любимец ба’гов…

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#17

06.02.2023 16:03:21

Цитата
написал:
Вы пример файла приложите наконец или одно из двух?

Прикрепленные файлы

  • пример1.xlsx (11.07 КБ)

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#18

06.02.2023 16:38:59

Код
=СУММПРОИЗВ(($F$3:$F$11=K3)*(СЧЁТЕСЛИ($L$1:$L$2;$E$3:$E$11)>0)*(СЧЁТЕСЛИ($N$3:$N$6;$G$3:$G$11)>0))

Прикрепленные файлы

  • пример1 (5).xlsx (10.99 КБ)

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

memo

Пользователь

Сообщений: 1423
Регистрация: 28.02.2018

Excel 2013/2016

#19

06.02.2023 17:28:53

Для разнообразия. Формула массива.

Код
=COUNT(SIGN(MATCH(IF(($F$3:$F$11=K3)*(MATCH($E$3:$E$11;$L$1:$L$2;));$G$3:$G$11);$N$3:$N$6;)))

З.Ы. пара скобок лишняя, можете убрать сами)

Прикрепленные файлы

  • пример1 (5).xlsx (10.45 КБ)

Изменено: memo06.02.2023 17:30:32

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

#21

06.02.2023 19:54:31

Цитата
Юрий М написал:
А по Вашей логике получается, что задача скрывается в этих трёх точках.

ну если честно, то читая я думаю как раз о том, что есть короткая формула, и её нужно увеличить, сделать из нее длинную, а не справится с ограничением еxcel или сократить формулу.

Изменено: БМВ06.02.2023 19:56:17

По вопросам из тем форума, личку не читаю.

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#22

06.02.2023 20:00:53

Цитата
написал:

Цитата
Юрий М написал:
А по Вашей логике получается, что задача скрывается в этих трёх точках.

ну если честно, то читая я думаю как раз о том, что есть короткая формула, и её нужно увеличить, сделать из нее длинную, а не справится с ограничением еxcel или сократить формулу.

согласен,
и вообще после того как Юрий отмодерировал название темы) есть впечатление что есть какая формула которая увеличивает кол-во данных в ячейке) либо как делается более длинная формула :)

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

в добавлении к теме:) тогда — либо как еще оптимизировать монстроподобную формулу — в нормальную :)

ps. БМВ спасибо)

Изменено: George L06.02.2023 20:18:33

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#24

06.02.2023 20:36:55

Цитата
George L написал:
после того как Юрий отмодерировал название темы)

Я ничего не менял.

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

массивка
=SUM(COUNTIFS(F:F;K3;G:G;$N$3:$N$6;E:E;TRANSPOSE($Q$3:$Q$4)))
но при данном количестве ок, а так, сountifs на весь столбец лучше не использовать.

По вопросам из тем форума, личку не читаю.

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#26

07.02.2023 08:51:07

Цитата
написал:
Я ничего не менял.

сорри тогда, значит другой, просто тоже не менял.

Цитата
написал:
массивка =SUM(COUNTIFS(F:F;K3;G:G;$N$3:$N$6;E:E;TRANSPOSE($Q$3:$Q$4)))но при данном количестве ок, а так, сountifs на весь столбец лучше не использовать.

первые три столбца точно столбцы по полной будут использоваться.. там более 10к строк

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

#27

07.02.2023 20:11:40

Цитата
George L написал:
первые три столбца точно столбцы по полной будут использоваться.. там более 10к строк

10К строк это 1% от допустимого миллиона — это называется по поной?

По вопросам из тем форума, личку не читаю.

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#28

08.02.2023 14:39:56

Цитата
написал:
10К строк это 1% от допустимого миллиона — это называется по поной?

по сравнению с миллионом конечно нет, но в данном случае же не выделять каждый раз меняя в формуле диапазон (начальный и  конечный *фиксированный*)  

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

сделайте с запасом, даже 100К строк это 10% от того объема что функция  просматривает при обработке всего столбца. Это касается именно СЧЁТЕСЛИМН, в отличии от подобных, и видимо её писал непутевый программист, она работает именно так, хотя СУМЕСЛИМН уже обрабатывает только используемый диапазон.

По вопросам из тем форума, личку не читаю.

 

George L

Пользователь

Сообщений: 23
Регистрация: 24.12.2022

#30

16.02.2023 09:34:47

Цитата
написал:
сделайте с запасом, даже 100К строк это 10% от того объема что функция  просматривает при обработке всего столбца. Это касается именно СЧЁТЕСЛИМН, в отличии от подобных, и видимо её писал непутевый программист, она работает именно так, хотя СУМЕСЛИМН уже обрабатывает только используемый диапазон.

только время вышло написать..
кстати ..парадокс.. что к примеру взяв на 10к строчек с запасом 40к — все сработало, при уменьшении запаса до 30к выдает н/д , хотя строк проверил реально 10к .. хз почему .. тут же интервал в формуле меняю на 40к.. все опять ок..

(кстати сам файлик после внесения изменений начал грузиться дольше где то секунд 10 из-за вычисления потоков)

Время на прочтение
4 мин

Количество просмотров 28K

VBA – очень полезная вещь. Можно консолидировать данные из многих файлов и обрабатывать большие объемы информации с использованием интересных алгоритмов. Например, макрос Nodupes. Он использует возникающую в процессе выполнения кода ошибку как проверку наличия элемента в формируемой коллекции. Есть макросы, использующие рекурсию для формирования всех возможных комбинаций и перестановок.

Но я бы хотел показать несколько примеров использования стандартных функций листа программы Excel. Достаточно часто приходится городить огород из формул, чтобы вытащить из ячеек нужный текст или числа. Происходит это как правило из-за неверного представления данных. Числа — это числа, текст — это текст, не надо их смешивать. Даты (и время) это числа, с которыми можно и нужно производить вычисления. Не надо путать 14.03.2018 с 14 марта 2018 г. Второе это только пользовательский формат даты [$-F800], то, что мы видим в ячейке, а в строке формул будет 14.03.2018. И хватит об этом.

1. Допустим у вас есть таблица с временами начала и окончания каких-то событий, например, телефонных разговоров.

На рисунке часть таблицы _t2. Необходимо вычислить максимальное одновременное количество событий. Для этого есть такая формула:

=МАКС(МУМНОЖ((_t2[start]>=ТРАНСП(_t2[start]))*(_t2[start]<=ТРАНСП(_t2[end]));СТРОКА(_t2[start])^0))
Или в английской локали
=MAX(MMULT((_t2[start]>=TRANSPOSE(_t2[start]))*(_t2[start]<=TRANSPOSE(_t2[end])),ROW(_t2[start])^0))

Формула массивная, ввод подтверждается одновременным нажатием кнопок Control, Shift, Enter (CSE). В строке формул будет видно, что формула в фигурных скобках. МУМНОЖ делает виртуальную матрицу размером число строк таблица на число строк таблицы, в строках которой результаты вычисления, как если бы в строки таблицы была введена следующая формула (для второй строки) =СУММПРОИЗВ(Ч((C$2:C2>A2)))/ =SUMPRODUCT(N((C$2:C2>A2))), и протянуть на всю таблицу.

2. То же самое, но посложнее. Кроме начала и окончания есть количество агрегатов или отдаваемая/получаемая мощность. Необходимо определить максимальную мощность в какой-то момент времени.

Часть таблицы _t1:

И сама формула:

=МАКС(МУМНОЖ((ТРАНСП(_t1[start]*1440)<=СТРОКА(1:1436)-1)*(ТРАНСП(_t1[stop]*1440)>=СТРОКА(1:1436)-1);_t1[power]))
=MAX(MMULT((TRANSPOSE(_t1[start]*1440)<=ROW(1:1436)-1)*(TRANSPOSE(_t1[stop]*1440)>=ROW(1:1436)-1),_t1[power]))

Поскольку время — это доля единицы, умножаем значения на количество минут в сутках, чтобы получить целые числа. И второй аргумент МУМНОЖ – столбец значений мощности. В первом случае был сформирован столбец единиц.

3. Слева в таблице представлены суммы, соответствующие определенным интервалам. Необходимо вычислить суммы по месяцам. Предполагается, что суммы распределены равномерно внутри своих интервалов.

В столбце Н первые числа месяцев, в столбце I следующие формулы:

=СУММ(_tis[sum per day]*ЕСЛИОШИБКА((ЕСЛИ(КОНМЕСЯЦА(H3;0)>_tis[end];_tis[end];КОНМЕСЯЦА(H3;0))-ЕСЛИ(H3>_tis[start];H3;_tis[start])+1)^0,5;)^2)
=SUM(_tis[sum per day]*IFERROR((IF(EOMONTH(H3,0)>_tis[end],_tis[end],EOMONTH(H3,0))-IF(H3>_tis[start],H3,_tis[start])+1)^0.5,)^2)

Формулы массивные. Можно было бы использовать СУММПРОИЗВ/SUMPRODUCT, но ЕСЛИОШИБКА не работает без массивного ввода. Также, к сожалению, МАКС и МИН не могут сформировать виртуальный массив значений. Поэтому для вычисления частей интервалов, приходящихся на месяц, используется ЕСЛИ. Так как полученные части могут быть отрицательными, искусственно вызывается ошибка (квадратный корень из отрицательного числа приводит к ней). В исходной таблице можно было обойтись без столбцов длительности интервала и дневной суммы. Формула стала бы немного длиннее.

4. Небольшое развлечение. Сколько в году может быть счастливых пятниц?

Количество пятниц:

=СУММПРОИЗВ((ДЕНЬ(СТРОКА(ИНДЕКС(A:A;B2):ИНДЕКС(A:A;C2)))=13)*(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;B2):ИНДЕКС(A:A;C2));2)=5))
=SUMPRODUCT((DAY(ROW(INDEX(A:A,B2):INDEX(A:A,C2)))=13)*(WEEKDAY(ROW(INDEX(A:A,B2):INDEX(A:A,C2)),2)=5))

Даты пятниц:

=ЕСЛИОШИБКА(АГРЕГАТ(15;6;СТРОКА(ИНДЕКС($A:$A;$B2):ИНДЕКС($A:$A;$C2))/(ДЕНЬ(СТРОКА(ИНДЕКС($A:$A;$B2):ИНДЕКС(A:A;$C2)))=13)/(ДЕНЬНЕД(СТРОКА(ИНДЕКС($A:$A;$B2):ИНДЕКС($A:$A;$C2));2)=5);СТОЛБЕЦ(A$2));"")
=IFERROR(AGGREGATE(15,6,ROW(INDEX($A:$A,$B2):INDEX($A:$A,$C2))/(DAY(ROW(INDEX($A:$A,$B2):INDEX(A:A,$C2)))=13)/(WEEKDAY(ROW(INDEX($A:$A,$B2):INDEX($A:$A,$C2)),2)=5),COLUMN(A$2)),"")

Это очень хорошо (здесь), что первая строка листа соответствует 01.01.1901. Поэтому достаточно легко сформировать массив дат года с помощью ИНДЕКС и СТРОКА и считать только пятницы тринадцатое.

5. Размер процентной ставки, зависящей от суммы, встречается достаточно часто. Если пользоваться ими неправильно, то график полученных сумм будет такой как красный график ниже:

Чтобы этого избежать, необходимо применять ставку только к части суммы, приходящейся на интервал. А для младших интервалов брать фиксированные суммы.

Для таких исходных данных:

Формула:

=ВПР(A3;tbl;2)*(A3-ВПР(A3;tbl;1))+СУММПРОИЗВ(ЕСЛИОШИБКА((tbl[limit]<=A3)*(tbl[limit]-СМЕЩ(tbl[limit];-1;))*СМЕЩ(tbl[rate];-1;);))
=VLOOKUP(A3,tbl,2)*(A3-VLOOKUP(A3,tbl,1))+SUMPRODUCT(IFERROR((tbl[limit]<=A3)*(tbl[limit]-OFFSET(tbl[limit],-1,))*OFFSET(tbl[rate],-1,),))

Формула массивная. В А3 – сумма, для которой нужно вычислить проценты. Исходные данные –tbl.
И, напоследок, кредитная линия с изменяемой процентной ставкой. Формула для расчета суммы процентов в зависимости от дат/сумм траншей/возвратов.

История кредита:

Изменение ставки:

=ЕСЛИ(B1=0;СУММ(ЕСЛИОШИБКА(ПРОСМОТР(_d;_s[[date]:[rate]]);)*ТРАНСП(B5:B16)*ИНДЕКС((_d>ТРАНСП(A5:A16))*(_d<=A2);;)*1/(365+(ОСТАТ(ГОД(_d);4)=0)))-СУММ(ЕСЛИОШИБКА(ПРОСМОТР(_d;_s[[date]:[rate]]);)*ТРАНСП(D5:D16)*ИНДЕКС((_d>ТРАНСП(C5:C16))*(_d<=A2);;)*1/(365+(ОСТАТ(ГОД(_d);4)=0)));)
=IF(B1=0,SUM(IFERROR(LOOKUP(_d,_s[[date]:[rate]]),)*TRANSPOSE(B5:B16)*INDEX((_d>TRANSPOSE(A5:A16))*(_d<=A2),,)*1/(365+(MOD(YEAR(_d),4)=0)))-SUM(IFERROR(LOOKUP(_d,_s[[date]:[rate]]),)*TRANSPOSE(D5:D16)*INDEX((_d>TRANSPOSE(C5:C16))*(_d<=A2),,)*1/(365+(MOD(YEAR(_d),4)=0))),)

Формула массивная. Считает проценты по дням, учитывает високосные года.

Спасибо за внимание!

0 / 0 / 0

Регистрация: 03.06.2012

Сообщений: 31

1

Обход ограничения «Слишком длинная формула»

09.11.2012, 16:55. Показов 19506. Ответов 8


Студворк — интернет-сервис помощи студентам

Приветствую всех специалистов по EXСEL. Периодически возникают сложности с длинными формулами — которые программа отказывается обрабатывать. В этих случаях я решаю эту проблему тем, что дописываю новые условия в рядом находящуюся ячейку — что не совсем удобно. Вопрос: существует ли возможность снять ограничение на длину формул?.. Формулы, длину которых я ищу возможность увеличить, состоят из алгоритмов сравнения (ЕСЛИ/И/ИЛИ) динамических данных двух ячеек. Буду очень признателен за ответ.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.11.2012, 16:55

8

956 / 596 / 11

Регистрация: 11.06.2010

Сообщений: 1,345

09.11.2012, 17:01

2

Цитата
Сообщение от CC
Посмотреть сообщение

существует ли возможность снять ограничение на длину формул?

Нет. В каждой версии есть свои ограничения

Цитата
Сообщение от CC
Посмотреть сообщение

Формулы, длину которых я ищу возможность увеличить, состоят из алгоритмов сравнения (ЕСЛИ/И/ИЛИ) динамических данных двух ячеек

Эти формулы легко «укоротить». Способов много, о некоторых из них даже написано в справке Excel



1



0 / 0 / 0

Регистрация: 03.06.2012

Сообщений: 31

09.11.2012, 18:35

 [ТС]

3

Добрый вечер, уважаемый Serge 007 .
1) Если в какой-либо из версий EXCEL есть возможность радикально удлинить формулу по сравнению с моей ‘2003 версией — подскажите, пожалуйста, как она называется.
2) Подскажите, пожалуйста, направление поиска решения задачи сравнения 500 различных значений одной ячейки с 500 различными значениями другой ячейки — с записью результата сопоставления в третью ячейку (с учетом того, что в некоторых случаях сопоставляются не только чистые значения, а и математические операции над элементами этих значений).
Спасибо за ответ.



0



2633 / 1333 / 255

Регистрация: 25.10.2010

Сообщений: 2,194

09.11.2012, 19:02

4

Цитата
Сообщение от CC
Посмотреть сообщение

возможность радикально удлинить формулу

Наверное, здесь вопрос даже не в длине формулы, а в ограничении количества вложений функций, в частности ЕСЛИ

Цитата
Сообщение от CC
Посмотреть сообщение

направление поиска решения задачи

Без конкретного примера трудно угадать, но возможно, если правильно организовать данные, помогут функции ПРОСМОТР, ВПР, ГПР, ИНДЕКС+ПОИСКПОЗ
Можно пользовательскую функцию написать



1



956 / 596 / 11

Регистрация: 11.06.2010

Сообщений: 1,345

09.11.2012, 20:54

5

Цитата
Сообщение от CC
Посмотреть сообщение

1) Если в какой-либо из версий EXCEL есть возможность радикально удлинить формулу по сравнению с моей ‘2003 версией — подскажите, пожалуйста, как она называется.

Каждая последующая версия Excel (2007,2010,2013) обладает всё большими возможностями для некоторых функций. Например количество вложений функций ЕСЛИ() в
2003 — 7
2007 — 64
2010 — 128

Цитата
Сообщение от CC
Посмотреть сообщение

направление поиска решения задачи

Надо видеть эту задачу. Универсальных решений не бывает



1



0 / 0 / 0

Регистрация: 03.06.2012

Сообщений: 31

09.11.2012, 21:50

 [ТС]

6

Уважаемые Serge 007 и Pelena, в приведенном мною примере (во вложенном файле) ячейка А3 содержит всего несколько формул — но реально их может быть 500 и более, аналогичных этим по контексту. Вычисления происходят исключительно в плоскости двух ячеек. К сожалению, унифицированных алгоритмов вычисления для значений ячеек А1 и А2 нет — исключая случаи точного соответствия.
Сейчас сделаю резервную копию оси и попробую установить EXCEL-2014.. ))



0



2633 / 1333 / 255

Регистрация: 25.10.2010

Сообщений: 2,194

09.11.2012, 23:04

7

Ничего не поняла
По всей видимости числа из A1 и A2 тоже как-то формируются из определенных цифр, но логику не уловила

Кстати, условие ПСТР(A2;1;2)<>СУММ(ПСТР(A2;2;1)+ПРАВСИМВ(A2)) будет всегда истинным (если только первая цифра числа не ноль)



0



0 / 0 / 0

Регистрация: 03.06.2012

Сообщений: 31

10.11.2012, 03:00

 [ТС]

8

Цитата
Сообщение от Pelena
Посмотреть сообщение

Ничего не поняла

Да я тоже пока мало чего понимаю — поэтому здесь и консультируюсь.. (шутка, ессно).
Значения в ячейках А1 и А2 берутся из других ячеек, все значения живые и с периодичностью раз в час шевелятся.
Насчёт перманентной истинности приведённого в моём примере условия — да, возможно Вы и правы. Но ведь это всего лишь пример, обозначающий приблизительную структуру моих вычислений.



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

11.11.2012, 02:29

9

Я думаю чем городить такую многоэтажность, проще написать UDF, где нет в общем никаких ограничений.
А что именно нужно — из формулы вычитывать совершенно неохота.
Вы словами можете написать, что и как там анализируется?



0



Длина формулы превышает 8192 знака

Almost

Дата: Понедельник, 30.12.2019, 16:18 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 40


Репутация:

2

±

Замечаний:
0% ±


Excel 2016

Уважаемые форумчане,

имеется древняя относительно большая (4М) сложная двоичная книга на 45 листов, с кучей имён, объектов, макросов, проверкой данных, с условным и специальным форматированием, группировками и пр. Не было разве что внешних связей. Вдруг понадобилось подружить её с другой системой и для этого конвертировать в *.xlsm, но пациент туда не хочет. Ошибка:

«Длина одной или нескольких формул в данной книге превышает допустимую длину, равную 8192 знакам. Чтобы обойти это ограничение, следует сохранить данную книгу в формате двоичной книги Excel»

В поисках источника файл раздербанен до 1 листа, причём вновь созданного. Удалены все родные листы, имена (в т.ч. скрытые), макросы. Но даже эта культя чем-то упирается и не идёт в *.xlsm. Осталось подозрение на содержимое папки External Links, но если его убрать, Excel падает на колени при попытке открыть и восстановить.

Есть идеи?

К сообщению приложен файл:

test.xlsb
(88.5 Kb)

Сообщение отредактировал AlmostПонедельник, 30.12.2019, 16:19

 

Ответить

bmv98rus

Дата: Понедельник, 30.12.2019, 20:11 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016

значит нужно просто перенести листы в другую книгу, ну и макросы тоже.


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

Almost

Дата: Четверг, 09.01.2020, 10:30 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 40


Репутация:

2

±

Замечаний:
0% ±


Excel 2016

Тоже не помогло. Даже если один любой лист переношу в новую книгу, она уже не сохраняется в формате xlsm и выдаёт ту же ошибку.

 

Ответить

Nic70y

Дата: Четверг, 09.01.2020, 10:36 |
Сообщение № 4

Группа: Друзья

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

Замечаний:
0% ±


Excel 2010

сохранил как .xls
.xls сохранил как .xlsm


ЮMoney 41001841029809

 

Ответить

Almost

Дата: Среда, 29.01.2020, 15:45 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 40


Репутация:

2

±

Замечаний:
0% ±


Excel 2016

Это прокатывало с обрезанным примером, но не сработало на большом исходнике.

В итоге помогло:

1. Изменить расширение на *.zip
2. Открыть файл архиватором
3. Удалить файлы внешних ссылок в папке «ExternalLinks» и подпапке «rels», не удаляя сами папки (иначе Excel рухнет)
4. Вернуть оригинальное расширение
5. Открыть в Excel и разрешить восстановление

 

Ответить

_Boroda_

Дата: Среда, 29.01.2020, 21:30 |
Сообщение № 6

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Удалены все родные … имена (в т.ч. скрытые)

Вообще-то у Вас в этом файле 3140 скрытых имен :D
Вот такой макрос делает все имена видимыми и на листе выводит те, длина которых более 8192 знаков
[vba]

Код

Sub tt()
    With ThisWorkbook
        m_ = .Names.Count
‘        MsgBox «Кол-во имен — » & m_
        For i = 1 To m_
            .Names(i).Visible = 1
            l_ = .Names(i).RefersToLocal
            If Len(l_) > 8192 Then
                k_ = k_ + 1
                Cells(k_, 1) = .Names(i).NameLocal
                Cells(k_, 2) = «‘» & l_
                Cells(k_, 3) = Len(l_)
            End If
        Next i
    End With
End Sub

[/vba]
А вот такой удаляет те имена, которые можно (оставшиеся 9 штук можно удалить руками, а можно и не трогать, они не мешают)
[vba]

Код

Sub ttt()
    With ThisWorkbook
        On Error Resume Next
        For i = .Names.Count To 1 Step -1
            .Names(i).Delete
        Next i
    End With
End Sub

[/vba]
Итог в файле _3


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Almost

Дата: Четверг, 30.01.2020, 14:39 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 40


Репутация:

2

±

Замечаний:
0% ±


Excel 2016

_Boroda_, Офигеть, спасибо большое. Я прогонял такой макрос, думал что он удалит все скрытые имена:

[vba]

Код

Sub tt2tt()

    For Each nm In ActiveWorkbook.Names

        If Not nm.Visible Then nm.Delete

    Next nm

End Sub

[/vba]

 

Ответить

Страница 1 из 2

  1. написал уже 8 строк (в основном проверка логики «если — то») и ООо больше не дает — режет функцию и выдает ошибку 512

    может есть предел длины функции?


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  2. ну точно:

    512
    Слишком длинная формула
    Компилятор: общее количество внутренних лексем (т.е. операторов, переменных и угловых скобок) в формуле превышает 512.

    а что делать?
    формула должна быть минимум в 4 раза длиннее????


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…


  3. ish

    Команда форума
     
     

    vb спасет отца русской демократии


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  4. нет, просто тупо не хватает места

    говорят, что в Экселе 2003 — 1024 символа, а в Экселе 2007 — 8192 символа — это максимальная длина формулы

    но что-то мне не хочется искать 2007 ради одной формулы, тем более покупать его


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  5. щас скачаю свежий ООо — посмотрю там на ограничение длины функции


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…


  6. ish

    Команда форума
     
     


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  7. стоит 2003 на одной из машин, на остальных — ООо

    на какую из машин ты думаешь я хочу поставить Эксель-2010?
    да ни на какую… он просто не нужен

    щас догружу свежий ООо, потом пойду искать — может есть где 2007?


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  8. мдя… в 3.4.1 тоже 512 символов

    пойду пошарю по компам, может найду 2007


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  9. нашёл 2010 стартерс
    так там вообще какая-то хрень — все формулы выдают ошибки

    а ты говоришь: «Купи эксель!!!»


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  10. мне страшно даже подумать, что придется переписывать все формулы с ООо на Эксель-2010

    я неделю рисовал логику ромбиками, а ты предлагаешь за 1 час всё порушить и сидеть переписывать


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…


  11. Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  12. ish

    Команда форума
     
     

    имхо, да
    заодно убрать все большие формулы в VB

    очевидно


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…


  13. ish

    Команда форума
     
     

    можно не только у них посмотреть..в софтмаркете каком нить.


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  14. ЗЫ ты не поверишь, но на одном из ноутов до сих пор стоит ХР из-за того, что в 7-ке странно организован процесс работы с приоритетами по пользователям, и, например, МТ4-тестер совсем отказывается работать в 7-ке так, как того хотелось бы

    и я им до сих пор пользуюсь


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  15. страшно спросить, что такое VB и сколько времени мне понадобится для его освоения???


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…


  16. ish

    Команда форума
     
     

    vb = visual basic (формально VBA visual basic for application)
    если ты пишешь формулы — то совсем немного для старта

    но принципиально расширишь свои возможности


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  17. никакого отношения

    просто я не люблю продукты от МС


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  18. сейчас загружу пробную версию — посмотрим, справится ли она


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  19. А ты подумал как сам же свою формулу будешь через месяц читать и ругаться на ее автора?
    Правильное ограничение 512, я бы еще меньше сделал.

    Подумай, как можно изменить логику расчета, возможно с использованием функции SUMPRODUCT (СУММПРОИЗВ).

    По поводу VB тоже мнение неоднозначное. Ясности понимания он точно не добавляет, поэтому для математики никогда не использую, только для автоматизации действий над ячейками.

  20. да скорее всего никак… 3 группы переменных — 4, 6 и 6 вариантов в каждой

    итого дофига
    описано в формуле пока только 16 комбинаций, а мы уже за 512 символов вышли


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

  21. приведу пример:

    можно не любить жигули или кадиллак
    и торчать от какого-нибудь грейт-волла, как вариант

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


    Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…


  22. Stop hovering to collapse…
    Click to collapse…


    Hover to expand…
    Нажмите, чтобы раскрыть…

Страница 1 из 2

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

Понравилась статья? Поделить с друзьями:
  • Какая лента используется при работе с формулами в word
  • Какая кнопка на клавиатуре позволяет изменять ссылки excel
  • Какая корреляция в excel
  • Какая кнопка меню в word
  • Какая комбинация клавиш существует для переключения между открытыми документами word