Здравствуйте Форумчане и гости форума! Нужно извлечь из диапазона A2:A13 бОльшее число из каждых двух ячеек в столбце и записать его в соседний столбец. В примере B2:B7 сделал, как должно получится.
Здравствуйте Форумчане и гости форума! Нужно извлечь из диапазона A2:A13 бОльшее число из каждых двух ячеек в столбце и записать его в соседний столбец. В примере B2:B7 сделал, как должно получится.DrMini
Сергей, огромное спасибо. Обе формулы работают идеально. Пытался "методом научного тыка" выбрать максимальное число из трёх или четырёх ячеек подряд но... не хватает знаний. [p.s.]Если будет время разъясните пожалуйста, как это работает.[/p.s.]
Сергей, огромное спасибо. Обе формулы работают идеально. Пытался "методом научного тыка" выбрать максимальное число из трёх или четырёх ячеек подряд но... не хватает знаний. [p.s.]Если будет время разъясните пожалуйста, как это работает.[/p.s.]DrMini
Сначала для формулы с ДВССЫЛ() Если в ячейку второй строки, например С2 ввести вот эту часть формулы ="A"&СТРОКА(A1)*2&":A"&СТРОКА(A1)*2+1, то результатом её работы будет текст "A2:A3" Далее функция ДВССЫЛ() преобразует текст в ссылку на диапазон, из которого функция МАКС() вернет максимальное значение Тут всё просто)
Если необходимо иметь не две ячейки в диапазоне, а три, то эту часть формулы: "A"&СТРОКА(A1)*2&":A"&СТРОКА(A1)*2+1 необходимо заменить на такую: "A"&(СТРОКА()-2)*3+2&":A"&(СТРОКА()-2)*3+4 Почему именно так? Потому что каждый диапазон должен иметь три ячейки, начиная со второй строки Т.е. нам надо получить пары (первое число в паре - нижняя граница, второе - верхняя) чисел с шагом 3: 2 - 4 5 - 7 8 - 10 и т.д, что бы получить диапазоны A2:A4 A5:A7 A8:A10 и т.д.
(СТРОКА()-2)*3+2 во второй строке вернет 2, а (СТРОКА()-2)*3+4 вернет 4
Если нужен шаг 4, то действуем по аналогии: (СТРОКА()-2)*3+2 заменяем на (СТРОКА()-2)*4+2, а (СТРОКА()-2)*3+4 на (СТРОКА()-2)*4+5
Сначала для формулы с ДВССЫЛ() Если в ячейку второй строки, например С2 ввести вот эту часть формулы ="A"&СТРОКА(A1)*2&":A"&СТРОКА(A1)*2+1, то результатом её работы будет текст "A2:A3" Далее функция ДВССЫЛ() преобразует текст в ссылку на диапазон, из которого функция МАКС() вернет максимальное значение Тут всё просто)
Если необходимо иметь не две ячейки в диапазоне, а три, то эту часть формулы: "A"&СТРОКА(A1)*2&":A"&СТРОКА(A1)*2+1 необходимо заменить на такую: "A"&(СТРОКА()-2)*3+2&":A"&(СТРОКА()-2)*3+4 Почему именно так? Потому что каждый диапазон должен иметь три ячейки, начиная со второй строки Т.е. нам надо получить пары (первое число в паре - нижняя граница, второе - верхняя) чисел с шагом 3: 2 - 4 5 - 7 8 - 10 и т.д, что бы получить диапазоны A2:A4 A5:A7 A8:A10 и т.д.
(СТРОКА()-2)*3+2 во второй строке вернет 2, а (СТРОКА()-2)*3+4 вернет 4
Если нужен шаг 4, то действуем по аналогии: (СТРОКА()-2)*3+2 заменяем на (СТРОКА()-2)*4+2, а (СТРОКА()-2)*3+4 на (СТРОКА()-2)*4+5Serge_007
С ДВССЫЛ прикольно, интересная функция, много с ней можно, но не в больших объемах)
Да, волатильными функциями лучше поменьше пользоваться, если речь идет о формулах на листе
Интересно что VBA "понимает" простую конкатенацию текстовых частей ссылок и преобразовывает их в "настоящие" ссылки без каких-либо дополнительных функций Excel так не умеет
С ДВССЫЛ прикольно, интересная функция, много с ней можно, но не в больших объемах)
Да, волатильными функциями лучше поменьше пользоваться, если речь идет о формулах на листе
Интересно что VBA "понимает" простую конкатенацию текстовых частей ссылок и преобразовывает их в "настоящие" ссылки без каких-либо дополнительных функций Excel так не умеетSerge_007
Пояснялка для формулы со СМЕЩ(): Функция СМЕЩ() "умеет" создавать виртуальные массивы Формула =СМЕЩ(A2;СТРОКА()-2;;2), написанная во второй строке, создает виртуальный массив начиная с ячейки А2 (первый аргумент), высотой 2 ячейки (четвертый аргумент) и со смещением в 0 строк (второй аргумент) от А2, т.е. виртуальный массив соответствует диапазону А2:А3 Однако, когда при копировании формула оказывается в третьей строке =СМЕЩ(A3;СТРОКА()-2;;2) второй аргумент (смещение по строкам) уже становится равен единице, т.е. смещение происходит на одну строку от А3, что соответствует диапазону А4:А5 Ну и дальше, с каждой строкой смещение становится каждый раз больше на единицу Тут, вроде всё должно быть понятно)
Что надо изменить в формуле, если берем диапазон не из двух ячеек, а, например, из трех? Разумеется, что четвертый аргумент изменится с 2 на 3 Но, кроме того, смещение теперь должно быть не на одну строку, а на две, т.е. часть формулы СТРОКА()-2 надо будет заменить на (СТРОКА(A1)-1)*2 Таким образом мы последовательность 0 1 2 3
заменяем на 0 2 4 6
Итоговая формула получается такой:
Код
=МАКС(СМЕЩ(A2;(СТРОКА(A1)-1)*2;;3))
Для четырех ячеек:
Код
=МАКС(СМЕЩ(A2;(СТРОКА(A1)-1)*3;;4))
Далее - по аналогии
Если что-то непонятно написал - спрашивайте, постараюсь перефразировать)
Пояснялка для формулы со СМЕЩ(): Функция СМЕЩ() "умеет" создавать виртуальные массивы Формула =СМЕЩ(A2;СТРОКА()-2;;2), написанная во второй строке, создает виртуальный массив начиная с ячейки А2 (первый аргумент), высотой 2 ячейки (четвертый аргумент) и со смещением в 0 строк (второй аргумент) от А2, т.е. виртуальный массив соответствует диапазону А2:А3 Однако, когда при копировании формула оказывается в третьей строке =СМЕЩ(A3;СТРОКА()-2;;2) второй аргумент (смещение по строкам) уже становится равен единице, т.е. смещение происходит на одну строку от А3, что соответствует диапазону А4:А5 Ну и дальше, с каждой строкой смещение становится каждый раз больше на единицу Тут, вроде всё должно быть понятно)
Что надо изменить в формуле, если берем диапазон не из двух ячеек, а, например, из трех? Разумеется, что четвертый аргумент изменится с 2 на 3 Но, кроме того, смещение теперь должно быть не на одну строку, а на две, т.е. часть формулы СТРОКА()-2 надо будет заменить на (СТРОКА(A1)-1)*2 Таким образом мы последовательность 0 1 2 3
заменяем на 0 2 4 6
Итоговая формула получается такой:
Код
=МАКС(СМЕЩ(A2;(СТРОКА(A1)-1)*2;;3))
Для четырех ячеек:
Код
=МАКС(СМЕЩ(A2;(СТРОКА(A1)-1)*3;;4))
Далее - по аналогии
Если что-то непонятно написал - спрашивайте, постараюсь перефразировать)Serge_007
Сергей, да не во что! Я уже понял, что это сейчас моя миссия - показывать людям светлое будущее Excel'я, так сказать, разжигать аппетит. Поэтому стараюсь в любой мало-мальски интересной для меня теме отметиться новым синтаксисом.
Сергей, да не во что! Я уже понял, что это сейчас моя миссия - показывать людям светлое будущее Excel'я, так сказать, разжигать аппетит. Поэтому стараюсь в любой мало-мальски интересной для меня теме отметиться новым синтаксисом.Gustav
Когда я пишу "365/2021+", то имею в виду как бы "...и все последующие (будущие) версии". Надо для усиления, наверное, писать по-СИшному "по-пацански", типа "365/2021++"
А Вы в office.com вхожи? Туда, где бесплатный Microsoft 365 он-лайн? Там всё работает, я там проверяю работоспособность формул. Этот доступ, как я понимаю, автоматически даётся всем, имеющим учетку Microsoft (Live Id). Ну, или в Google Sheets можно - они вообще молодцы, дают всё всем и всегда. У них вышла новая функция - значит, она вышла для всех. А то, что Мелкомягкие с "цветовой дифференциацией штанов" устроили: кому-то добавляем функцию, кому-то нет, кто-то заплати сначала - это удручает крайне (два раза "Ку!").
Когда я пишу "365/2021+", то имею в виду как бы "...и все последующие (будущие) версии". Надо для усиления, наверное, писать по-СИшному "по-пацански", типа "365/2021++"
А Вы в office.com вхожи? Туда, где бесплатный Microsoft 365 он-лайн? Там всё работает, я там проверяю работоспособность формул. Этот доступ, как я понимаю, автоматически даётся всем, имеющим учетку Microsoft (Live Id). Ну, или в Google Sheets можно - они вообще молодцы, дают всё всем и всегда. У них вышла новая функция - значит, она вышла для всех. А то, что Мелкомягкие с "цветовой дифференциацией штанов" устроили: кому-то добавляем функцию, кому-то нет, кто-то заплати сначала - это удручает крайне (два раза "Ку!").Gustav
А Вы в office.com вхожи? Туда, где бесплатный Microsoft 365 он-лайн?
Нет не вхож. Если честно даже не задумывался об этом. Ну, а там где я работаю, новых офисов в ближайшей перспективе не предвидится. Константин, ваши комментарии всегда читаю с интересом. Спасибо Вам за это. А вдруг пригодится?!
А Вы в office.com вхожи? Туда, где бесплатный Microsoft 365 он-лайн?
Нет не вхож. Если честно даже не задумывался об этом. Ну, а там где я работаю, новых офисов в ближайшей перспективе не предвидится. Константин, ваши комментарии всегда читаю с интересом. Спасибо Вам за это. А вдруг пригодится?!
Я уже понял, что это сейчас моя миссия - показывать людям светлое будущее Excel'я, так сказать, разжигать аппетит.
Это прям как пармезаном дразнить. Если учесть факт, что на смену выстраданному многолетним трудом спецов Excel приходит насажденный даже не Libre. а P7 или МойОфис , которые конечно могут стать альтернативой, но оооочень вялой альтернативой, то я даже не знаю, что и сказать о недосягаемом светлом будущем
Вопрос не в объемах. Сейчас не найду но на планете был пример, когда замена множества OFFSET на нелетучий вариант приводила к еще большим тормозам. Самое то стращное не то, что она медленная, а то что пересчитывается при любом пересчете в приложении. наберете в новой книге =1+1 а открытой начнутся пересчеты OFFSET. А потом вопрос , почему 1+1 так долго считает.
Я уже понял, что это сейчас моя миссия - показывать людям светлое будущее Excel'я, так сказать, разжигать аппетит.
Это прям как пармезаном дразнить. Если учесть факт, что на смену выстраданному многолетним трудом спецов Excel приходит насажденный даже не Libre. а P7 или МойОфис , которые конечно могут стать альтернативой, но оооочень вялой альтернативой, то я даже не знаю, что и сказать о недосягаемом светлом будущем
Вопрос не в объемах. Сейчас не найду но на планете был пример, когда замена множества OFFSET на нелетучий вариант приводила к еще большим тормозам. Самое то стращное не то, что она медленная, а то что пересчитывается при любом пересчете в приложении. наберете в новой книге =1+1 а открытой начнутся пересчеты OFFSET. А потом вопрос , почему 1+1 так долго считает.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Четверг, 09.11.2023, 21:19