Создать массив последовательных чисеел
Udik
Дата: Воскресенье, 13.11.2016, 15:55 |
Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация:
192
±
Замечаний:
0% ±
Excel 2016 х 64
Можно ли создать одномерный массив последовательных чисел без цикла? [vba]Код
Public Sub test() Dim arr1 Dim i As Long, i2& i = 1 i2 = 900 arr1=? End Sub
[/vba] в результате в arr1 должно быть: arr1(1)=1, arr1(2)=2, ... arr1(20)=20
Можно ли создать одномерный массив последовательных чисел без цикла? [vba]Код
Public Sub test() Dim arr1 Dim i As Long, i2& i = 1 i2 = 900 arr1=? End Sub
[/vba] в результате в arr1 должно быть: arr1(1)=1, arr1(2)=2, ... arr1(20)=20 Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Сообщение отредактировал Udik - Воскресенье, 13.11.2016, 16:44
Ответить
Сообщение Можно ли создать одномерный массив последовательных чисел без цикла? [vba]Код
Public Sub test() Dim arr1 Dim i As Long, i2& i = 1 i2 = 900 arr1=? End Sub
[/vba] в результате в arr1 должно быть: arr1(1)=1, arr1(2)=2, ... arr1(20)=20 Автор - Udik Дата добавления - 13.11.2016 в 15:55
Kuzmich
Дата: Воскресенье, 13.11.2016, 16:31 |
Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация:
156
±
Замечаний:
0% ±
Excel 2003
[vba]Код
Dim Arr1 Arr1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
[/vba]
[vba]Код
Dim Arr1 Arr1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
[/vba] Kuzmich
Ответить
Сообщение [vba]Код
Dim Arr1 Arr1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
[/vba] Автор - Kuzmich Дата добавления - 13.11.2016 в 16:31
fairylive
Дата: Воскресенье, 13.11.2016, 16:42 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 122
Репутация:
4
±
Замечаний:
0% ±
Excel 2016
arr1 = range("A1:A20").value При условии что на активном листе в диапазоне А1:А20 последовательные числа. Правда в таком случае массив будет двумерным arr1 (1 to 20, 1 to 1). Но думаю Redim решит проблему.
arr1 = range("A1:A20").value При условии что на активном листе в диапазоне А1:А20 последовательные числа. Правда в таком случае массив будет двумерным arr1 (1 to 20, 1 to 1). Но думаю Redim решит проблему. fairylive
Сообщение отредактировал fairylive - Воскресенье, 13.11.2016, 16:45
Ответить
Сообщение arr1 = range("A1:A20").value При условии что на активном листе в диапазоне А1:А20 последовательные числа. Правда в таком случае массив будет двумерным arr1 (1 to 20, 1 to 1). Но думаю Redim решит проблему. Автор - fairylive Дата добавления - 13.11.2016 в 16:42
Udik
Дата: Воскресенье, 13.11.2016, 16:44 |
Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация:
192
±
Замечаний:
0% ±
Excel 2016 х 64
Не, вручную прописывать не пойдёт, а если таких чисел 50 или 100? Во избежание непоняток изменил i2 в 1 посте. И да, сделать всё в памяти.
Не, вручную прописывать не пойдёт, а если таких чисел 50 или 100? Во избежание непоняток изменил i2 в 1 посте. И да, сделать всё в памяти. Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Сообщение отредактировал Udik - Воскресенье, 13.11.2016, 16:47
Ответить
Сообщение Не, вручную прописывать не пойдёт, а если таких чисел 50 или 100? Во избежание непоняток изменил i2 в 1 посте. И да, сделать всё в памяти. Автор - Udik Дата добавления - 13.11.2016 в 16:44
fairylive
Дата: Воскресенье, 13.11.2016, 16:49 |
Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 122
Репутация:
4
±
Замечаний:
0% ±
Excel 2016
Тогда нужны ещё условия. Зачем это надо и от куда будут поступать эти 20 или 900 последовательных чисел. Может и не надо изобретать ничего.
Тогда нужны ещё условия. Зачем это надо и от куда будут поступать эти 20 или 900 последовательных чисел. Может и не надо изобретать ничего. fairylive
Ответить
Сообщение Тогда нужны ещё условия. Зачем это надо и от куда будут поступать эти 20 или 900 последовательных чисел. Может и не надо изобретать ничего. Автор - fairylive Дата добавления - 13.11.2016 в 16:49
nilem
Дата: Воскресенье, 13.11.2016, 16:56 |
Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация:
563
±
Замечаний:
0% ±
Excel 2013, 2016
может так?: [vba]Код
Sub test() Dim arr arr = Application.Transpose([Row(20:31)]) Range("A1").Resize(UBound(arr)).Value = Application.Transpose(arr) End Sub
[/vba]
может так?: [vba]Код
Sub test() Dim arr arr = Application.Transpose([Row(20:31)]) Range("A1").Resize(UBound(arr)).Value = Application.Transpose(arr) End Sub
[/vba] nilem
Яндекс.Деньги 4100159601573
Ответить
Сообщение может так?: [vba]Код
Sub test() Dim arr arr = Application.Transpose([Row(20:31)]) Range("A1").Resize(UBound(arr)).Value = Application.Transpose(arr) End Sub
[/vba] Автор - nilem Дата добавления - 13.11.2016 в 16:56
Udik
Дата: Воскресенье, 13.11.2016, 17:58 |
Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация:
192
±
Замечаний:
0% ±
Excel 2016 х 64
Не, так лист используется, а я хотел бы в памяти всё провернуть. . Теперь зачем всё это надо Имеется табличка из которой надо вытянуть все строки, но только часть непоследовательных столбцов. Сначала хочу разом загнать табличку в массив arr1 (с этим проблем нет) , а потом из него вытащить в массив arr2 нужные столбцы. Дошёл до такой формулы [vba]Код
arr2() = Application.Index(arr1, Application.Transpose(arr3), Array(1, 2, 7, 8))
[/vba] но чтобы эта строка работала, arr3 должен быть одномерным. В цикле заполнить несложно, а вдруг есть более "прямые" способы.
Не, так лист используется, а я хотел бы в памяти всё провернуть. . Теперь зачем всё это надо Имеется табличка из которой надо вытянуть все строки, но только часть непоследовательных столбцов. Сначала хочу разом загнать табличку в массив arr1 (с этим проблем нет) , а потом из него вытащить в массив arr2 нужные столбцы. Дошёл до такой формулы [vba]Код
arr2() = Application.Index(arr1, Application.Transpose(arr3), Array(1, 2, 7, 8))
[/vba] но чтобы эта строка работала, arr3 должен быть одномерным. В цикле заполнить несложно, а вдруг есть более "прямые" способы.Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Ответить
Сообщение Не, так лист используется, а я хотел бы в памяти всё провернуть. . Теперь зачем всё это надо Имеется табличка из которой надо вытянуть все строки, но только часть непоследовательных столбцов. Сначала хочу разом загнать табличку в массив arr1 (с этим проблем нет) , а потом из него вытащить в массив arr2 нужные столбцы. Дошёл до такой формулы [vba]Код
arr2() = Application.Index(arr1, Application.Transpose(arr3), Array(1, 2, 7, 8))
[/vba] но чтобы эта строка работала, arr3 должен быть одномерным. В цикле заполнить несложно, а вдруг есть более "прямые" способы.Автор - Udik Дата добавления - 13.11.2016 в 17:58
nilem
Дата: Воскресенье, 13.11.2016, 18:49 |
Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация:
563
±
Замечаний:
0% ±
Excel 2013, 2016
Не, так лист используется
используется только, чтобы показать массив если нужны все строки и столбцы 1, 2, 7, 8, то попробуйте так [vba]Код
arr2() = Application.Index(arr1, 0, Array(1, 2, 7, 8))
[/vba]
Не, так лист используется
используется только, чтобы показать массив если нужны все строки и столбцы 1, 2, 7, 8, то попробуйте так [vba]Код
arr2() = Application.Index(arr1, 0, Array(1, 2, 7, 8))
[/vba]nilem
Яндекс.Деньги 4100159601573
Ответить
Сообщение Не, так лист используется
используется только, чтобы показать массив если нужны все строки и столбцы 1, 2, 7, 8, то попробуйте так [vba]Код
arr2() = Application.Index(arr1, 0, Array(1, 2, 7, 8))
[/vba]Автор - nilem Дата добавления - 13.11.2016 в 18:49
Udik
Дата: Воскресенье, 13.11.2016, 18:57 |
Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация:
192
±
Замечаний:
0% ±
Excel 2016 х 64
используется только, чтобы показать массив
знак равно как бы намекает, что идёт присвоение левой части, а слева диапазон листа , так что не могу согласиться [vba]Код
Range("A1").Resize(UBound(arr)).Value = Application.Transpose(arr)
[/vba] А Application.Index(arr1, 0, Array(1, 2, 7, 8)) я пробовал, чего-то не заработала, но ещё разок помучаю. == Ага, ерунда выходит - создаётся одномерный массив из 4-х членов, причём заполняется каким-то причудливым образом.
используется только, чтобы показать массив
знак равно как бы намекает, что идёт присвоение левой части, а слева диапазон листа , так что не могу согласиться [vba]Код
Range("A1").Resize(UBound(arr)).Value = Application.Transpose(arr)
[/vba] А Application.Index(arr1, 0, Array(1, 2, 7, 8)) я пробовал, чего-то не заработала, но ещё разок помучаю. == Ага, ерунда выходит - создаётся одномерный массив из 4-х членов, причём заполняется каким-то причудливым образом.Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Сообщение отредактировал Udik - Воскресенье, 13.11.2016, 19:14
Ответить
Сообщение используется только, чтобы показать массив
знак равно как бы намекает, что идёт присвоение левой части, а слева диапазон листа , так что не могу согласиться [vba]Код
Range("A1").Resize(UBound(arr)).Value = Application.Transpose(arr)
[/vba] А Application.Index(arr1, 0, Array(1, 2, 7, 8)) я пробовал, чего-то не заработала, но ещё разок помучаю. == Ага, ерунда выходит - создаётся одномерный массив из 4-х членов, причём заполняется каким-то причудливым образом.Автор - Udik Дата добавления - 13.11.2016 в 18:57
fairylive
Дата: Воскресенье, 13.11.2016, 20:47 |
Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 122
Репутация:
4
±
Замечаний:
0% ±
Excel 2016
но чтобы эта строка работала, arr3 должен быть одномерным.
Ну так переопределить массив. Двухмерный в одномерный. Redim arr3(1 to 20). С сохранением данных чтобы было после Redim оператор Preserve.
но чтобы эта строка работала, arr3 должен быть одномерным.
Ну так переопределить массив. Двухмерный в одномерный. Redim arr3(1 to 20). С сохранением данных чтобы было после Redim оператор Preserve.fairylive
Ответить
Сообщение но чтобы эта строка работала, arr3 должен быть одномерным.
Ну так переопределить массив. Двухмерный в одномерный. Redim arr3(1 to 20). С сохранением данных чтобы было после Redim оператор Preserve.Автор - fairylive Дата добавления - 13.11.2016 в 20:47
Udik
Дата: Понедельник, 14.11.2016, 13:57 |
Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация:
192
±
Замечаний:
0% ±
Excel 2016 х 64
С сохранением данных чтобы было после Redim оператор Preserve
Вы на практике такое пробовали? Ибо есть маленький нюансЦитата
При использовании ключевого слова Preserve имеется возможность изменить значение только последней размерности массива и не допускается изменение числа размерностей.
С сохранением данных чтобы было после Redim оператор Preserve
Вы на практике такое пробовали? Ибо есть маленький нюансЦитата
При использовании ключевого слова Preserve имеется возможность изменить значение только последней размерности массива и не допускается изменение числа размерностей.
Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Ответить
Сообщение С сохранением данных чтобы было после Redim оператор Preserve
Вы на практике такое пробовали? Ибо есть маленький нюансЦитата
При использовании ключевого слова Preserve имеется возможность изменить значение только последней размерности массива и не допускается изменение числа размерностей.
Автор - Udik Дата добавления - 14.11.2016 в 13:57
fairylive
Дата: Понедельник, 14.11.2016, 21:46 |
Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 122
Репутация:
4
±
Замечаний:
0% ±
Excel 2016
Вы на практике такое пробовали? Ибо есть маленький нюанс
Нда попутал я. Но всё равно с вашимЦитата
не допускается изменение числа размерностей.
не вяжется. Недавно только на днях столкнулся с тем что когда массив задаётся диапазоном ячеек, то он получается двумерный, даже если диапазон одна строка или столбец (1 to 20, 1 to 1). Но в тоже время если задается одной ячейкой то он уже будет одномерный (1 to 1). Я как раз переопределял этот одномерный массив в двумерный просто задавая ReDim M1_ar(1 To 1, 1 To 1). И программа отрабатывала как надо. Кусок кода был такой: [vba]Код
If .Range(m1_adr).Cells.count = 1 Then ReDim M1_ar(1 To 1, 1 To 1) M1_ar(1, 1) = Range(m1_adr).Value Else M1_ar = Range(m1_adr).Value End If
[/vba] UPD. Про нюанс Preserve не сразу увидел... Тогда то что я описал не прокатит. Понял теперь.
Вы на практике такое пробовали? Ибо есть маленький нюанс
Нда попутал я. Но всё равно с вашимЦитата
не допускается изменение числа размерностей.
не вяжется. Недавно только на днях столкнулся с тем что когда массив задаётся диапазоном ячеек, то он получается двумерный, даже если диапазон одна строка или столбец (1 to 20, 1 to 1). Но в тоже время если задается одной ячейкой то он уже будет одномерный (1 to 1). Я как раз переопределял этот одномерный массив в двумерный просто задавая ReDim M1_ar(1 To 1, 1 To 1). И программа отрабатывала как надо. Кусок кода был такой: [vba]Код
If .Range(m1_adr).Cells.count = 1 Then ReDim M1_ar(1 To 1, 1 To 1) M1_ar(1, 1) = Range(m1_adr).Value Else M1_ar = Range(m1_adr).Value End If
[/vba] UPD. Про нюанс Preserve не сразу увидел... Тогда то что я описал не прокатит. Понял теперь.fairylive
Сообщение отредактировал fairylive - Понедельник, 14.11.2016, 21:53
Ответить
Сообщение Вы на практике такое пробовали? Ибо есть маленький нюанс
Нда попутал я. Но всё равно с вашимЦитата
не допускается изменение числа размерностей.
не вяжется. Недавно только на днях столкнулся с тем что когда массив задаётся диапазоном ячеек, то он получается двумерный, даже если диапазон одна строка или столбец (1 to 20, 1 to 1). Но в тоже время если задается одной ячейкой то он уже будет одномерный (1 to 1). Я как раз переопределял этот одномерный массив в двумерный просто задавая ReDim M1_ar(1 To 1, 1 To 1). И программа отрабатывала как надо. Кусок кода был такой: [vba]Код
If .Range(m1_adr).Cells.count = 1 Then ReDim M1_ar(1 To 1, 1 To 1) M1_ar(1, 1) = Range(m1_adr).Value Else M1_ar = Range(m1_adr).Value End If
[/vba] UPD. Про нюанс Preserve не сразу увидел... Тогда то что я описал не прокатит. Понял теперь.Автор - fairylive Дата добавления - 14.11.2016 в 21:46
SLAVICK
Дата: Вторник, 15.11.2016, 11:37 |
Сообщение № 13
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
хм. раньше не заморачивался этим(у индекса есть большооой недостаток - он не работает со СТРИНГами длиной больше 255 символов - поэтому мне он не подходит)) - а тут, раз обсуждают - решил полюбопытствовать(пока не более того). Почитав тут - понял, что [vba]Код
varTemp = Application.Index(varArray, 0, Application.Transpose(Array(2, 4, 5)))
[/vba] работает у других, но у меня, как и у Вас - почему то не срабатывает . Но решение вроде нашел (у мну работает): [vba]Код
arr2 = Application.Index(arr1, [row(1:20)], (Array(1, 3, 7, 4)))
[/vba]
хм. раньше не заморачивался этим(у индекса есть большооой недостаток - он не работает со СТРИНГами длиной больше 255 символов - поэтому мне он не подходит)) - а тут, раз обсуждают - решил полюбопытствовать(пока не более того). Почитав тут - понял, что [vba]Код
varTemp = Application.Index(varArray, 0, Application.Transpose(Array(2, 4, 5)))
[/vba] работает у других, но у меня, как и у Вас - почему то не срабатывает . Но решение вроде нашел (у мну работает): [vba]Код
arr2 = Application.Index(arr1, [row(1:20)], (Array(1, 3, 7, 4)))
[/vba] SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение хм. раньше не заморачивался этим(у индекса есть большооой недостаток - он не работает со СТРИНГами длиной больше 255 символов - поэтому мне он не подходит)) - а тут, раз обсуждают - решил полюбопытствовать(пока не более того). Почитав тут - понял, что [vba]Код
varTemp = Application.Index(varArray, 0, Application.Transpose(Array(2, 4, 5)))
[/vba] работает у других, но у меня, как и у Вас - почему то не срабатывает . Но решение вроде нашел (у мну работает): [vba]Код
arr2 = Application.Index(arr1, [row(1:20)], (Array(1, 3, 7, 4)))
[/vba] Автор - SLAVICK Дата добавления - 15.11.2016 в 11:37
Udik
Дата: Вторник, 15.11.2016, 15:11 |
Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация:
192
±
Замечаний:
0% ±
Excel 2016 х 64
Но решение вроде нашел (у мну работает):
Оно работает, если в row константы, а для переменных нужен бубен Но я его нашёл [vba]Код
str1 = i & ":" & i2 str1 = "=Row(" & str1 & ")" arr2() = Application.Index(arr1, Evaluate(str1), Array(1, 2, 7, 8)) rng1.Resize(UBound(arr2), UBound(arr2, 2)).Value = arr2()
[/vba]
Но решение вроде нашел (у мну работает):
Оно работает, если в row константы, а для переменных нужен бубен Но я его нашёл [vba]Код
str1 = i & ":" & i2 str1 = "=Row(" & str1 & ")" arr2() = Application.Index(arr1, Evaluate(str1), Array(1, 2, 7, 8)) rng1.Resize(UBound(arr2), UBound(arr2, 2)).Value = arr2()
[/vba]Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Ответить
Сообщение Но решение вроде нашел (у мну работает):
Оно работает, если в row константы, а для переменных нужен бубен Но я его нашёл [vba]Код
str1 = i & ":" & i2 str1 = "=Row(" & str1 & ")" arr2() = Application.Index(arr1, Evaluate(str1), Array(1, 2, 7, 8)) rng1.Resize(UBound(arr2), UBound(arr2, 2)).Value = arr2()
[/vba]Автор - Udik Дата добавления - 15.11.2016 в 15:11
SLAVICK
Дата: Вторник, 15.11.2016, 15:37 |
Сообщение № 15
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
если в row константы, а для переменных нужен бубен
c этого места поподробнее - и желательно пример, когда не сработает :Удалил неверное соображение .... Кажется понял.. нужно покумекать еще.
если в row константы, а для переменных нужен бубен
c этого места поподробнее - и желательно пример, когда не сработает :Удалил неверное соображение .... Кажется понял.. нужно покумекать еще.SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Вторник, 15.11.2016, 15:46
Ответить
Сообщение если в row константы, а для переменных нужен бубен
c этого места поподробнее - и желательно пример, когда не сработает :Удалил неверное соображение .... Кажется понял.. нужно покумекать еще.Автор - SLAVICK Дата добавления - 15.11.2016 в 15:37
Udik
Дата: Вторник, 15.11.2016, 15:43 |
Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация:
192
±
Замечаний:
0% ±
Excel 2016 х 64
Просто я сразу ссылаюсь на диапазон а у Вас это идет через Evaluate
А попробуйте в row прописать диапазон с переменными, у меня только с Evaluate получилось.
Просто я сразу ссылаюсь на диапазон а у Вас это идет через Evaluate
А попробуйте в row прописать диапазон с переменными, у меня только с Evaluate получилось.Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Ответить
Сообщение Просто я сразу ссылаюсь на диапазон а у Вас это идет через Evaluate
А попробуйте в row прописать диапазон с переменными, у меня только с Evaluate получилось.Автор - Udik Дата добавления - 15.11.2016 в 15:43
SLAVICK
Дата: Вторник, 15.11.2016, 17:57 |
Сообщение № 17
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
посмотрел , почитал ... видимо действительно для этой цели оптимально использовать Evaluate , тем более, если верить 2-й ссылке - так даже быстрее.
посмотрел , почитал ... видимо действительно для этой цели оптимально использовать Evaluate , тем более, если верить 2-й ссылке - так даже быстрее.SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение посмотрел , почитал ... видимо действительно для этой цели оптимально использовать Evaluate , тем более, если верить 2-й ссылке - так даже быстрее.Автор - SLAVICK Дата добавления - 15.11.2016 в 17:57
krosav4ig
Дата: Вторник, 15.11.2016, 23:35 |
Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация:
989
±
Замечаний:
0% ±
Excel 2007,2010,2013
одномерный массив последовательных чисел без цикла
в JS это длается довольно просто, например массив из n чисел с x по x+n-1 формируется вот так [vba]Код
Array.apply(null, Array(n)).map(function(_,i){return i+x;})
[/vba] , а вот в vba через scriptcontrol подобная конструкция наотрез отказывается работать
одномерный массив последовательных чисел без цикла
в JS это длается довольно просто, например массив из n чисел с x по x+n-1 формируется вот так [vba]Код
Array.apply(null, Array(n)).map(function(_,i){return i+x;})
[/vba] , а вот в vba через scriptcontrol подобная конструкция наотрез отказывается работатьkrosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал krosav4ig - Вторник, 15.11.2016, 23:36
Ответить
Сообщение одномерный массив последовательных чисел без цикла
в JS это длается довольно просто, например массив из n чисел с x по x+n-1 формируется вот так [vba]Код
Array.apply(null, Array(n)).map(function(_,i){return i+x;})
[/vba] , а вот в vba через scriptcontrol подобная конструкция наотрез отказывается работатьАвтор - krosav4ig Дата добавления - 15.11.2016 в 23:35
SLAVICK
Дата: Среда, 16.11.2016, 10:06 |
Сообщение № 19
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
в JS это длается довольно просто,
что же тогда сложно? . массив из n чисел с x по x+n-1 формируется вот так
ну мы тут с Udik ом пришли к такой незамысловатой конструкции : [vba]Код
m = Evaluate("row(" & x & ":" & x + n - 1 & ")")
[/vba] Собственно строка извлечения данных из массива со строки i до i2, и столбцов 1, 3, 7, 4 получается так: [vba]Код
arr2 = Application.Index(arr1, Evaluate("row(" & i & ":" & i2 & ")"), (Array(1, 3, 7, 4)))
[/vba] К сожалению для меня такая конструкция большого значения не имеет, поскольку, как уже писал выше:он не работает со СТРИНГами длиной больше 255 символов
я себе давно состряпал простые ЮДФки для извлечения данных из массива. НО для общего развития - пойдет, может где и сгодится .
в JS это длается довольно просто,
что же тогда сложно? . массив из n чисел с x по x+n-1 формируется вот так
ну мы тут с Udik ом пришли к такой незамысловатой конструкции : [vba]Код
m = Evaluate("row(" & x & ":" & x + n - 1 & ")")
[/vba] Собственно строка извлечения данных из массива со строки i до i2, и столбцов 1, 3, 7, 4 получается так: [vba]Код
arr2 = Application.Index(arr1, Evaluate("row(" & i & ":" & i2 & ")"), (Array(1, 3, 7, 4)))
[/vba] К сожалению для меня такая конструкция большого значения не имеет, поскольку, как уже писал выше:он не работает со СТРИНГами длиной больше 255 символов
я себе давно состряпал простые ЮДФки для извлечения данных из массива. НО для общего развития - пойдет, может где и сгодится .SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение в JS это длается довольно просто,
что же тогда сложно? . массив из n чисел с x по x+n-1 формируется вот так
ну мы тут с Udik ом пришли к такой незамысловатой конструкции : [vba]Код
m = Evaluate("row(" & x & ":" & x + n - 1 & ")")
[/vba] Собственно строка извлечения данных из массива со строки i до i2, и столбцов 1, 3, 7, 4 получается так: [vba]Код
arr2 = Application.Index(arr1, Evaluate("row(" & i & ":" & i2 & ")"), (Array(1, 3, 7, 4)))
[/vba] К сожалению для меня такая конструкция большого значения не имеет, поскольку, как уже писал выше:он не работает со СТРИНГами длиной больше 255 символов
я себе давно состряпал простые ЮДФки для извлечения данных из массива. НО для общего развития - пойдет, может где и сгодится .Автор - SLAVICK Дата добавления - 16.11.2016 в 10:06
Udik
Дата: Пятница, 18.11.2016, 15:15 |
Сообщение № 20
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация:
192
±
Замечаний:
0% ±
Excel 2016 х 64
а вот в vba через scriptcontrol
У меня офис 64, там scriptcontrol вообще никак не работает.
а вот в vba через scriptcontrol
У меня офис 64, там scriptcontrol вообще никак не работает.Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Ответить
Сообщение а вот в vba через scriptcontrol
У меня офис 64, там scriptcontrol вообще никак не работает.Автор - Udik Дата добавления - 18.11.2016 в 15:15