749 / 460 / 50
Регистрация: 13.05.2012
Сообщений: 958
|
||||||
1 | ||||||
Как вывести всю строку(столбец) в массиве02.08.2013, 21:34. Показов 10262. Ответов 38
Метки нет (Все метки)
Привет Всем!
Есть матрица, например 1 4 7 10 2 5 8 11 3 6 9 12 Мне нужно вывести, например весь первый столбец 1 2 3 или всю строку 1 4 7 10 Пробую вот так
0
|
02.08.2013, 21:34 | |
Ответы с готовыми решениями:
38
Необходимо перемножить строку на столбец двумерного массива и результат вывести в одномерном массиве Как поменять местами 1-ю строку и 1 столбец в двухмерном массиве? хранимая процедура (MIN), как вывести всю строку, а не только 1 данное??? Как вывести столбец в двумерном массиве? |
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
||||||
02.08.2013, 22:14 | 2 | |||||
Матрица где? На листе? Куда выводить? В массив? На лист?
О! Извиняюсь! Пропустил Value (в окне писал). Уже исправил. Это вторую строку ...
0
|
749 / 460 / 50
Регистрация: 13.05.2012
Сообщений: 958
|
|
02.08.2013, 22:14 [ТС] | 3 |
я имею ввиду по аналогии с функцией Array
arr= Array(Array(1,2,3),Array(4,5,6), Array(7,8,9),Array(10,11,12)) Пишем здесь c=arr(0) и в окне Locals выводится то что нужно, т.е. 1 2 3 Как мне прописать это в массиве по аналогии с Array.
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
02.08.2013, 22:19 | 4 |
Функция Array - когда Вы явно задаете значения. Получите только одномерный гор. массив начиная от нулевого индекса.
Добавлено через 1 минуту Если у Вас есть массив (виртуальный, не на листе) - тогда только перебором в паралельный массив с Redim etc....
0
|
749 / 460 / 50
Регистрация: 13.05.2012
Сообщений: 958
|
|
02.08.2013, 22:25 [ТС] | 5 |
т.е. все же без цикла не обойтись?
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
02.08.2013, 22:36 | 6 | |||||
0
|
749 / 460 / 50
Регистрация: 13.05.2012
Сообщений: 958
|
||||||
02.08.2013, 22:36 [ТС] | 7 | |||||
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
02.08.2013, 22:40 | 8 | |||||
Но с циклом будет быстрее - померьте например на 10000 строк.
2
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
||||||
02.08.2013, 22:54 | 9 | |||||
Если у Вас массив на листе - тогда зачем для такой задачи? Диапазон определяете? Да! Потом его в массив! Потом из массива в массив! Святая Мария! Кругами вокруг одно дерева. А если определили диапазон, то с него любую строку/столбец в любое место. В том коде строку:
Set mRNg = [a1].CurrentRegion и переменную mRNG() вобще можна удалить - это было для Вас. И записать просто: c = 2: arr = [a1].CurrentRegion.Rows(c).Value Ну а если из вирт. массива, тогда
Ну да, при больших обьемах - совсем другое дело... Добавлено через 9 минут Вот про Index я забыл
1
|
749 / 460 / 50
Регистрация: 13.05.2012
Сообщений: 958
|
|
02.08.2013, 23:49 [ТС] | 10 |
Hugo121, как Вы нашли Application.Index? Он не упоминается в справке явным образом.
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
02.08.2013, 23:53 | 11 |
На форуме
1
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
03.08.2013, 00:05 | 12 |
Это шутки такие... Index - это функция, но не VBA, a листа Excel. А если ее еще использовать с Match - всякие VLookUp (ы), HLookUp (ы) могут идти пить пиво.
1
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
03.08.2013, 00:09 | 13 |
Да, но что её можно применить к виртуальному массиву - это на форуме увидел.
Но циклом перебрать быстрее. Конечно если массив маленький - то разница незаметна.
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
03.08.2013, 00:20 | 14 |
Ну да, а еще transpose... Поэтому и забыл, наверное...
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
03.08.2013, 00:30 | 15 |
Transpose только чтобы взять столбец.
Чтоб взять строку - Transpose не нужно.
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
03.08.2013, 00:52 | 16 |
Ну да, но крутим весь массив, не отдельную строку. На больших должно время тянуть (но я никогда не проверял). Или я что-то не понимаю...
0
|
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
|
|
03.08.2013, 07:58 | 17 |
Сообщение было отмечено как решение
Решение
Игорь, ты перемудрил Вместо:
Код
c = Application.Index(Application.Transpose(arr), 1, 0) Код
c = Application.Index(arr, 0, 1)
2
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
03.08.2013, 09:44 | 18 |
To kuklp. Спасибо, конечно, но я как-то и не использовал...
А вот это:
0
|
1702 / 189 / 19
Регистрация: 20.11.2011
Сообщений: 281
|
|
03.08.2013, 09:48 | 19 |
Igor_Tr, я отвечал(см. цитату в посте) другому Игорю(Hugo121) на его замечание о Transpose
1
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
03.08.2013, 09:56 | 20 |
Где-то читал, что два шутника в одной комнате - это пожар. Но все-таки, про "действительно"?
0
|
03.08.2013, 09:56 | |
03.08.2013, 09:56 | |
Помогаю со студенческими работами здесь
20
Вывести не всю таблицу умножения, а только заданный столбец Дана строка. Если скобки расставлены правильно, то вывести число 1. В противном случае вывести всю строку Как разбить строку на отдельные слова и вывести их в столбец А активного рабочего листа в порядке возрастания их длины Указатель на строку: как выводить не всю строку целиком, а конкретную букву Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |