Форум программистов, компьютерный форум, киберфорум
MS Office Excel
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 44
1

Как объявить одномерный массив от первой ячейки до последней заполненной?

19.06.2020, 17:00. Просмотров 920. Ответов 8

1. Как объявить одномерный массив стобец A от первой ячейки до последней заполненной?
2. Как объявить в одномерный массив именованный диапазон от первой ячейки до последней заполненной?
(надеюсь правильно выразился "именованный диапазон" это когда я через диспетчер имён присвоил например столбцу A имя "диапазон_1")
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2020, 17:00
Ответы с готовыми решениями:

Выделить ячейки с B4 и до последней заполненной
Я Вас уже, наверное, достал, но мне нужна Ваша помощь. В общем мне нужно в макросе...

Поиск последней заполненной ячейки
Еще раз здравствуйте. помогите пожалуйста с таким вопросом. Есть формула вида: ...

Определить адрес последней заполненной ячейки
Range("A1").SpecialCells(xlLastCell).Address возвращает тупо последнюю ячейку Cells(Rows.Count,...

Диапазон до последней заполненной ячейки в строке
Здравствуйте, подскажите пожалуйста, как указать в макросе не определенный диапазон, а до последней...

8
1117 / 422 / 79
Регистрация: 13.12.2016
Сообщений: 1,480
Записей в блоге: 1
19.06.2020, 17:54 2
Цитата Сообщение от GreenJoy Посмотреть сообщение
Как объявить одномерный массив стобец
Visual Basic
1
DIM x
в принципе все....
пример
Visual Basic
1
2
3
4
5
6
7
8
9
10
 Sub example_2() 'одномерный массив (на выбор), индексация всегда с 1  
    Dim x  
    With Range("A1", Cells(Rows.Count, 1).End(xlUp)) 'из столбца  
     x = WorksheetFunction.Transpose(.Value)  
    End With  
    With WorksheetFunction 'из строки  
     x = .Transpose(.Transpose(Range("A1", Cells(1, Columns.Count).End(xlToLeft)).Value))  
    End With  
    x = Application.Index(Range("A1", Cells(1, Columns.Count).End(xlToLeft)).Value, 1, 0)  
    End Sub
0
2314 / 1648 / 679
Регистрация: 04.09.2015
Сообщений: 3,324
19.06.2020, 17:55 3
Нужно найти первую пустую ячейку в столбце А или именованном диапазоне
Использовать в качестве индекса в функции ИНДЕКС(), где первый аргумент столбец А или именованный диапазон.
Первая ячейка столбца А - А1, у именованного диапазона - ИНДЕКС(именованный диапазон;1)
0
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 44
22.06.2020, 09:02  [ТС] 4
Извините, но я всё не разберусь как объявить массив.
вот пример макроса
нужно объявить массивы: Arr1x, Arr2x, Arr3x, Arr1y, Arr2y, Arr3x от первой до последней заполненной ячейки
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub dfhdh()
 
Arr1x = Sheets("Лист1").Range("A1:A3").Value
Arr2x = Sheets("Лист1").Range("C1:C3").Value
Arr3x = Sheets("Лист1").Range("E1:E3").Value
 
Arr1y = Sheets("Лист2").Range("A1:A3").Value
Arr2y = Sheets("Лист2").Range("C1:C3").Value
Arr3y = Sheets("Лист2").Range("E1:E3").Value
 
ARRx = Array(Arr1x, Arr2x, Arr3x)
ARRy = Array(Arr1y, Arr2y, Arr3y)
 
ARRxy = Array(ARRx, ARRy)
 
 
Sheets("Лист3").Range("A1").Value = ARRxy(0)(0)(1, 1)
End Sub
0
2314 / 1648 / 679
Регистрация: 04.09.2015
Сообщений: 3,324
22.06.2020, 09:13 5
Visual Basic
1
Arr1x = Range([A1], Range("A" & Rows.Count).End(xlUp)).Value
0
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 44
22.06.2020, 09:21  [ТС] 6
ошибку выдаёт
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub dfhdh()
 
Arr1x = Sheets("Лист1").Range([A1], Range("A" & Rows.Count).End(xlUp)).Value
Arr2x = Sheets("Лист1").Range([C1], Range("C" & Rows.Count).End(xlUp)).Value
Arr3x = Sheets("Лист1").Range([E1], Range("E" & Rows.Count).End(xlUp)).Value
 
Arr1y = Sheets("Лист2").Range([A1], Range("A" & Rows.Count).End(xlUp)).Value
Arr2y = Sheets("Лист2").Range([C1], Range("C" & Rows.Count).End(xlUp)).Value
Arr3y = Sheets("Лист2").Range([E1], Range("E" & Rows.Count).End(xlUp)).Value
 
ARRx = Array(Arr1x, Arr2x, Arr3x)
ARRy = Array(Arr1y, Arr2y, Arr3y)
 
ARRxy = Array(ARRx, ARRy)
 
 
Sheets("Лист3").Range("A1").Value = ARRxy(0)(0)(1, 1)
End Sub
0
Вложения
Тип файла: zip Книга115.zip (13.8 Кб, 1 просмотров)
2314 / 1648 / 679
Регистрация: 04.09.2015
Сообщений: 3,324
22.06.2020, 11:27 7
GreenJoy, не знаю, смогу я вам помочь, но думаю, что вам нужно пояснить задачу полнее, т.е. конечная цель.
Из вашего кода видно, что вы диапазоны помещаете в массивы и массивы объединяете. Так не получится.
Массивы объединяются в циклах пере объявляя массив ReDim Preserve
Диапазоны можно объединить с помощью Union()
Но эта функция на объединяет диапазоны с разных листов.
0
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 44
22.06.2020, 12:22  [ТС] 8
Я наверное пытался сделать четырёхмерный (многомерный) массив и для проверки правильно ли он работает вывожу значение нужной мне ячейки на лист3 в ячейку A1 Sheets("Лист3").Range("A1").Value = ARRxy(0)(0)(1, 1)

Всё работает как нужно если задавать диапазоны как Arr2x = Sheets("Лист1").Range("C1:C3").Value
но было бы круче если бы макрос сам задавал диапазон столбцов.
0
2314 / 1648 / 679
Регистрация: 04.09.2015
Сообщений: 3,324
22.06.2020, 15:06 9
Лучший ответ Сообщение было отмечено GreenJoy как решение

Решение

Посмотрите
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub dfhdh()
Set Sh = Sheets("Лист1")
Arr1x = Range(Sh.Cells(1, 1), Sh.Cells(Sh.Columns(1).End(xlDown).Row, 1)).Value
Arr2x = Range(Sh.Cells(1, 3), Sh.Cells(Sh.Columns(3).End(xlDown).Row, 3)).Value
Arr3x = Range(Sh.Cells(1, 5), Sh.Cells(Sh.Columns(5).End(xlDown).Row, 5)).Value
 
Set Sh = Sheets("Лист2")
Arr1y = Range(Sh.Cells(1, 1), Sh.Cells(Sh.Columns(1).End(xlDown).Row, 1)).Value
Arr2y = Range(Sh.Cells(1, 3), Sh.Cells(Sh.Columns(3).End(xlDown).Row, 3)).Value
Arr3y = Range(Sh.Cells(1, 5), Sh.Cells(Sh.Columns(5).End(xlDown).Row, 5)).Value
 
ARRx = Array(Arr1x, Arr2x, Arr3x)
ARRy = Array(Arr1y, Arr2y, Arr3y)
 
ARRxy = Array(ARRx, ARRy)
 
 
Sheets("Лист3").Range("A1").Value = ARRxy(0)(0)(1, 1)
End Sub
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2020, 15:06

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Макрос для копирования последней заполненной ячейки
Добрый вечер! Уважаемые гуру макросастроения. Буду весьма благодарен за ваше потраченное время ...

Поиск последней заполненной ячейки и добавлением примечания в соседнию
Здравствуйте, найти последнюю заполненную ячейку в столбце В и добавить примечание в соседнею...

Номер строки последней заполненной ячейки в заданном диапазоне
Всем доброго времени суток. Помогите наладить код по определению номера строки последней...

Найти номер последней заполненной ячейки в столбце, Excel
Добрый день! Импортирую данные из таблицы Excel,таблица состоит из двух столбцов. Первый очень...

Вывести в сообщении значение последней заполненной ячейки в базе Access
Здравствуйте! Подскажите пожалуйста каким образом с помощью VBA можно вывести в сообщении...

Сформировать из положительных элементов матрицы, расположенных в первой и последней строках, одномерный массив
Дана прямоугольная матрица. Сформировать из положительных элементов матрицы, расположенных в первой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.