Память дырявая. Не у меня Ты тогда да, написал, что А1:А2 лучше, но потом следующее сообщение - ой, не то, это я Михаилу чего-то там писал (тут у меня дырка открылась, не помню)[/offtop]
Цитата
1:15, нажми F9 и посмотри на ругань
Не надо нас дурить. Выдели СТРОКА(1:15) А также СТРОКА(А1:A15) и СТРОКА(А1:AAA15) Потому и пишу, что сомневаюсь. А проверить лень. СЧЕТЕСЛИ(А:А;...), например, сама определяет диапазон. Возможно, и СТРОКА() умнее.
[offtop]
Цитата
Мы с тобой уже это обсуждали как-то
Память дырявая. Не у меня Ты тогда да, написал, что А1:А2 лучше, но потом следующее сообщение - ой, не то, это я Михаилу чего-то там писал (тут у меня дырка открылась, не помню)[/offtop]
Цитата
1:15, нажми F9 и посмотри на ругань
Не надо нас дурить. Выдели СТРОКА(1:15) А также СТРОКА(А1:A15) и СТРОКА(А1:AAA15) Потому и пишу, что сомневаюсь. А проверить лень. СЧЕТЕСЛИ(А:А;...), например, сама определяет диапазон. Возможно, и СТРОКА() умнее.vikttur
Сообщение отредактировал vikttur - Воскресенье, 12.01.2014, 21:27
[offtop]Не перевираю. И не спорю. Я так помню. Могу ошибаться. Синюю линию видел и раньше. Выше написал:
Цитата
СЧЕТЕСЛИ(А:А;...), например, сама определяет диапазон. Возможно, и СТРОКА() умнее.
Опять же, не спорю и не утверждаю. Со-мне-ва-юсь. Функция показывает массив. Это я вижу. Не массив всего по всем столбцам - только массив чисел, сответствующий номерам строк. Да-а-йте чего-нибудь прочитать, меня Саня смутил вопросом :([/offtop]
[offtop]Не перевираю. И не спорю. Я так помню. Могу ошибаться. Синюю линию видел и раньше. Выше написал:
Цитата
СЧЕТЕСЛИ(А:А;...), например, сама определяет диапазон. Возможно, и СТРОКА() умнее.
Опять же, не спорю и не утверждаю. Со-мне-ва-юсь. Функция показывает массив. Это я вижу. Не массив всего по всем столбцам - только массив чисел, сответствующий номерам строк. Да-а-йте чего-нибудь прочитать, меня Саня смутил вопросом :([/offtop]vikttur
Сообщение отредактировал vikttur - Вторник, 14.01.2014, 22:03
СТРОКА(1:15) сколько в память ячеек грузит? А СТРОКА(A1:A15) сколько?
Интересный вопрос Умозрительно СТРОКА(1:15) и СТРОКА(A1:A15) работают одинаково и возвращают одинаковый результат - вертикальный массив {1:2:3:4:5:6:7:8:9:10:11:12:13:14:15} Совершенно необязательно, что СТРОКА(1:15) использует все 256*15 ячеек (в 2003XL) или 16384*15 ячеек (в 2007 и выше) Могу предположить, что СТРОКА() и СТОЛБЕЦ() не оперируют значениями ячеек, а используют свойство Row и Column указанных в них диапазонов
Протестировал небольшим макросом: [vba]
Код
Sub test() Dim t!, i&, n& n = 100000 Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
'тест 1 Range("A1").FormulaArray = "=ROW(A2:A65536)" t = Timer For i = 1 To n Range("A1").Calculate Next i Debug.Print Timer - t
'тест 2 Range("A1").FormulaArray = "=ROW(2:65536)" t = Timer For i = 1 To n Range("A1").Calculate Next i Debug.Print Timer - t
Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub
[/vba]
Разницы по скорости не обнаружил, результаты примерно одинаковые, хотя выделение памяти для расчета формул должны были сказаться на скорости (а возможно дополнительного выделения и не было).
Недостатком использования целых строк может быть то, что формула ссылается на довольно большие диапазоны, и изменения в любой из ячеек данного диапазона приведет к пересчету формул, ссылающихся на них, формула становится более "летучей", поэтому предпочтительнее использовать СТРОКА(A1:A15) вместо СТРОКА(1:15), для снижения частоты пересчета формул
СТРОКА(1:15) сколько в память ячеек грузит? А СТРОКА(A1:A15) сколько?
Интересный вопрос Умозрительно СТРОКА(1:15) и СТРОКА(A1:A15) работают одинаково и возвращают одинаковый результат - вертикальный массив {1:2:3:4:5:6:7:8:9:10:11:12:13:14:15} Совершенно необязательно, что СТРОКА(1:15) использует все 256*15 ячеек (в 2003XL) или 16384*15 ячеек (в 2007 и выше) Могу предположить, что СТРОКА() и СТОЛБЕЦ() не оперируют значениями ячеек, а используют свойство Row и Column указанных в них диапазонов
Протестировал небольшим макросом: [vba]
Код
Sub test() Dim t!, i&, n& n = 100000 Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
'тест 1 Range("A1").FormulaArray = "=ROW(A2:A65536)" t = Timer For i = 1 To n Range("A1").Calculate Next i Debug.Print Timer - t
'тест 2 Range("A1").FormulaArray = "=ROW(2:65536)" t = Timer For i = 1 To n Range("A1").Calculate Next i Debug.Print Timer - t
Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub
[/vba]
Разницы по скорости не обнаружил, результаты примерно одинаковые, хотя выделение памяти для расчета формул должны были сказаться на скорости (а возможно дополнительного выделения и не было).
Недостатком использования целых строк может быть то, что формула ссылается на довольно большие диапазоны, и изменения в любой из ячеек данного диапазона приведет к пересчету формул, ссылающихся на них, формула становится более "летучей", поэтому предпочтительнее использовать СТРОКА(A1:A15) вместо СТРОКА(1:15), для снижения частоты пересчета формулMCH
СТРОКА() и СТОЛБЕЦ() не оперируют значениями ячеек, а используют свойство Row и Column указанных в них диапазонов
А ведь верно! И я ведь это знал! Но забыл за два года И Виктор тоже знал, но видимо тоже забыл...
ЦитатаSerge_007
А к чему они, (функции СТРОКА, СТОЛБЕЦ, ЕССЫЛКА и т.д.) обращаются? Например СТРОКА(A1), введенная в A1?...
ЦитатаKL
Они обращаются к свойствам объекта Range не зависящим от свойства .Value, а значит и от остальных формул, в то время как большинство функций работают лишь со свойством .Value, которое может находится в зависимости от значений других ячеек.
СТРОКА() и СТОЛБЕЦ() не оперируют значениями ячеек, а используют свойство Row и Column указанных в них диапазонов
А ведь верно! И я ведь это знал! Но забыл за два года И Виктор тоже знал, но видимо тоже забыл...
ЦитатаSerge_007
А к чему они, (функции СТРОКА, СТОЛБЕЦ, ЕССЫЛКА и т.д.) обращаются? Например СТРОКА(A1), введенная в A1?...
ЦитатаKL
Они обращаются к свойствам объекта Range не зависящим от свойства .Value, а значит и от остальных формул, в то время как большинство функций работают лишь со свойством .Value, которое может находится в зависимости от значений других ячеек.
ак всё же, что по поводу пересчёта при использовании СТРОКА(1:15) ?
Прежде чем писать ответ я протестировал формулы. При использовании СТРОКА, любое изменение в диапазонах, на которые ссылаются формулы, производится пересчет
ак всё же, что по поводу пересчёта при использовании СТРОКА(1:15) ?
Прежде чем писать ответ я протестировал формулы. При использовании СТРОКА, любое изменение в диапазонах, на которые ссылаются формулы, производится пересчетMCH