Mershik, спасибо.
Я не волшебник, я только учусь.
16 сен 2020 15:37:50
Mershik, а вот такая сокращённая версия Вашей формулы работать будет нормально или "есть нюансы" кроме того, что в столбце "B" после таблицы должно быть пусто, иначе последний случай не считается?
=СУММ(C3:ИНДЕКС($C3:$C$14;ПОИСКПОЗ(ИСТИНА;ЕПУСТО(B3:$B$14);0)-1;1))
Я не волшебник, я только учусь.
|
|
|
18 авг 2020 16:58:12
-Если писать 31, то уже в Июле на Вашем примере заметно довольно существенное расхождение (к концу года 7 дней), а я хотел бы график сделать на год-два или даже три. -Если писать 30,4 то пропадает февраль (будет 2 января), но тут можно что-то придумать, например отсчёт начать со второго января (точнее с "01.01.2021 19:12:00" 44197,8 ), тогда точность более-менее нормальная и стабильная (+3 дня в первой половине года, потом лучше, с нового года - опять). Реально интересный подход, но хочется всё-таки стабильно попадать на 1 день месяца. В порядке бреда - могу фон в графике сделать прозрачным и под него подложить другой белый тупо с осями, но чует моё сердце, что эта Пизанская башня точно перекосится.
Изменено:
Я не волшебник, я только учусь.
|
|||
|
18 авг 2020 15:31:48
Добрый день!
Пытаюсь построить диаграмму Ганта, ну или что-то похожее. Никак не могу привести в порядок ось OX. Я хочу там промежуточные значения в начале каждого месяца, а Ёксель позволяет мне ось дат только для OY задать, на OX у меня число в формате дата и промежуточные значения через равные промежутки (в днях, а не месяцах). Что делать? Может график как-то переделать или придётся заморачиваться и делать не диаграмму, в её имитацию за счёт ячеек на листе и условного форматирования (
Изменено:
Я не волшебник, я только учусь.
|
|
|
10 июл 2020 21:04:16
Упростил файл до предела. Может быть в отдельный пост его выкину, правда не знаю, что спрашивать, кроме того, что как узнать что там 20.000000000000004. Меня удивило, что при умножении на 10^20 эксель всё-равно продолжает делать вид, что там 2E+21, но хранит как 2.0000000000000003E+21.
Изменено:
Я не волшебник, я только учусь.
|
|
|
10 июл 2020 20:48:06
Я не волшебник, я только учусь.
|
|||
|
10 июл 2020 20:36:40
В B3 находится значение 20.000000000000004. Как его из Экселя увидеть - не знаю. Сохранил книгу в формате XLSX, переименовал в ZIP и смотрел уже на XML
<c r="B2" s="6"> <f>[2]База!D15</f> <v>20</v> </c> <c r="C2" s="10"> <f>B2/$A2</f> <v>0.3125</v> </c> ........................... <c r="B3" s="6"> <f>[2]База!D29</f> <v>20.000000000000004</v> </c> <c r="C3" s="10"> <f>B3/$A3</f> <v>0.31250000000000006</v> </c> Как вариант решения проблемы - перед ранжированием округлять цифры до какого-то знака.
Изменено:
Я не волшебник, я только учусь.
|
|
|
8 июл 2020 16:03:25
У меня получилось вот так. Для каждого столбца своя формула (из-за того, что в результате столбцы не подряд, а между ними ещё столбец факт. В шапке последние 3 ячейки с такой же формулой, что и столбцы.
О! У Михаила Л вариант, похоже, лучше. Одна формула вместо 4-х.
Изменено:
Я не волшебник, я только учусь.
|
|
|
7 июл 2020 19:47:50
Nordheim, спасибо. Ответили на мой основной вопрос. Видимо, наследование в VBA работает таким странным образом. А вот с "возвратом цвета" бяда осталась прежней. В Вашей версии все текстбоксы возвращаются к начальному состоянию при двойном нажатии на один из них. Если я, например, после двойного клика, один раз нажму на какой-то другой из них (например, чтобы скопировать данные), то текстбокс всё-ещё останется зелёным (хоть он уже и не активный даже).
Вдохновлённый Вашим кодом, хотел ещё и на onClick поставить not_color, но такого события в VBA нет:) Неужели придётся писать 30 однотипных, но не идентичных onExit? Может быть можно как-то ActiveControl найти? Тогда перед выходом можно будет перебирать все элементы формы и блокировать активный (этот).
Я не волшебник, я только учусь.
|
|
|
7 июл 2020 13:37:15
Юрий М, подход мне очень понравился. Сначала показалось, что для многих текстбоксов придётся для flag и text делать что-то типа коллекции, но и так всё отлично работать будет, но всё-равно для каждого текстбокса придётся прописывать 3 процедуры, а у меня их около 30.
Попробую ещё раз сформулировать свою проблему: есть форма, на ней 30 текстбоксов, в которые нужно разрешить редактировать только по двойному щелчку. Для каждого из 30 текстбоксов описывать одни и те же события - не наш метод. Задача частично решена через Class, но "есть нюансы": 1. Class к TextBox как-то криво применён (неужели нет более красивого варианта наследования и я это правильно сделал?!). 2. В Class Module нету события onExit (неужели для каждого TextBox его отдельно описывать)?! 3. В событии onExit для каждого элемента приходится подставлять его имя. Разве нельзя как-то сослаться на элемент, на котором сработало событие? (гуглил, не нашёл)
Изменено:
Я не волшебник, я только учусь.
|
|
|
4 июл 2020 19:29:51
У вас там сейчас не число, а текст, так что и работать с ним нужно как с текстом. Формулой ТОЛЬКО ДЛЯ МИЛЛИОНОВ могу предложить вот так
=ПОДСТАВИТЬ(ЛЕВСИМВ(ПРАВСИМВ(H7;ДЛСТР(H7)-2);ДЛСТР(H7)-4);".";",")*1000000 Может вот это на какие-то мысли натолкнёт (
Я не волшебник, я только учусь.
|
|
|
4 июл 2020 19:13:54
Я не волшебник, я только учусь.
|
|||
|
4 июл 2020 13:09:19
«И жить торопится и чувствовать спешит» - ничего не меняется, люди всего лишь люди.
Я не волшебник, я только учусь.
|
|||||
|
4 июл 2020 03:44:44
Доброй ночи.
1. Во втором сообщении Вы забыли оформить код (есть специальная кнопочка в окне редактирования сообщения). 2. Код привели не целиком, там ещё одна строчка должна быть.
4. Вот ещё примечания от автора макроса и источник
P.S. И вообще тот макрос слегка о другом
Изменено:
Я не волшебник, я только учусь.
|
|||||||
|
4 июл 2020 01:17:46
Всем доброй охоты!
Рисую форму, в которой будет около 20 текстбоксов и комбобоксов разного размера. Хочу, чтобы данные в них можно было вносить только по двойному щелчку. Менять свойство на Locked для каждого элемента и прописывать событие onDoubleClick лениво. Вроде бы это всё делается через ClassModule, но я с ними не особо дружу и реализовал всё как-то коряво, на мой взгляд. Как правильно создать и использовать customTextBox и customComboBox? myClass
Изменено:
Я не волшебник, я только учусь.
|
|||||
|
4 июл 2020 00:24:26
Напоролся на 2 интересных видео:
1. Первое - ничего особенного, просто конкретно в цифрах показывает почему нельзя выделять, копировать/вставлять и т.д. Лично для меня это видео оказалось из серии "смотреть до конца", потому что я слоупок и не знал про Range.AdvancedFilter. 2. Во втором видео более продвинутые техники, например про то, что Коллекции существенно быстрее перебираются через For Each. P.S. Как думаете, позднее/ранее связывание со словарями экономить 30 милисекунд или реально существенно ускоряет код? (последний трик во втором видео)
Я не волшебник, я только учусь.
|
|
|
29 июн 2020 14:02:21
Тут без куска исходного кода, который что-то перебирает и меняет формулу в H2 ни ответа нормального не дать, ни темы не предложить.
Изменено:
Я не волшебник, я только учусь.
|
|||
|
24 мар 2020 13:23:13
Ігор Гончаренко, злой Вы. Ну зачем автору поста категории отдельно от таблицы?! Там формула нужна.
1. В первой строчке ручками прописать 1. 2. Вторую сначала лучше пропустить; 3. В третьей строке индексов формула типа: =ЕСЛИОШИБКА(ИНДЕКС(диапазон артикулов сверху этой строчки, верхняя граница диапазона закреплена;ПОИСКПОЗ(текущая категория;диапазон категорий сверху этой строчки, верхняя граница диапазона закреплена;0));МАКС((диапазон артикулов сверху этой строчки, верхняя граница диапазона закреплена)+1); 4. Скопировать формулу во вторую строку и протянуть до конца таблицы. Поздравляю! категориям присвоены уникальные артикулы
Я не волшебник, я только учусь.
|
|
|