Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 13.01.2020
Сообщений: 11
Excel

Определение адреса ячейки для задания диапазона

14.01.2020, 17:42. Показов 3044. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте !
Есть Таблица Excel, состоящая из трех столбцов с данными. Количество строк таблицы варьируется.
Требуется создать макрос, который будет добавлять к существующей таблице столбец с данными ("Координаты") .Количество строк в добавляемом столбце должно соответствовать количеству строк в существующей таблице. Так как каждый последующий раз размер исходной таблицы (количество строк) изменяется, при задании границ диапазона (фактически - ячеек добавляемого столбца), надо как то обозначить адрес второй ячейки, задающей диапазон. Что-то в духе:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Addcolumn
 
With Range("D1")
 
        ' Заголовок столбца
        
        .Value = "Координаты ACAD"
        .Font.Bold = True
        .Font.Italic = True
        .Font.Size = 10
        
End With
   
         Range(D2:??????????).Borders.LineStyle = True
где ?????????? - автоматически определяемый адрес пустой ячейки, находящейся справа от правого нижнего угла существующей (исходной) таблицы. Файл - форму таблицы прикрепляю. Я дикий чайник в VBA, прошу помощи знатоков, заранее огромное спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2020, 17:42
Ответы с готовыми решениями:

Последовательный выбор адреса ячейки из диапазона
Здравствуйте. Вот такой вопрос у меня. По листу в хаотическом порядке ползают цифры - если щелкать по кнопке. В столбце AF -...

Определение адреса ячейки
Для поиска нужного значения в определённом диапазоне ячеек использую конструкцию типа: Set XXX = Range("An:Bn").Find(What:=Y,...

Определение адреса ячейки гиперссылки
Здравствуйте. Столкнулся со следующей проблемой. Есть книга Excell, в которой есть лист с гиперссылками. Необходимо программно...

11
3 / 2 / 1
Регистрация: 05.01.2019
Сообщений: 29
14.01.2020, 19:30
как то так
Visual Basic
1
2
3
4
5
Sub границы()
Lastrow = Application.Max(Application.IfError(Application.Match(9E+307, Range("D:D"), 1), 0), Application.IfError(Application.Match("", Range("D:D"), -1), 0)) ' Определяем последнюю заполненную строку в столбце D, даже если есть скрытые или отфильрованные строки
' устанавливаем границы:
Range(Cells(2, 4), Cells(Lastrow, 7)).Borders.LineStyle = True  ' где 4 - номер столбца D, 7 - номер столбца G
End Sub
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
14.01.2020, 19:31
Ничего не понятно... Какая таблица, кто и как будет задавать/указывать эту таблицу макросу...
Может достаточно оперировать c CurrentRegion, а может всё намного сложнее.
Думаю без примера таблицы не понять.
0
0 / 0 / 0
Регистрация: 13.01.2020
Сообщений: 11
14.01.2020, 20:52  [ТС]
Прошу прощения, файл не прикрепился в первый раз, вот файл -

таблица.xlsx
0
0 / 0 / 0
Регистрация: 13.01.2020
Сообщений: 11
14.01.2020, 21:21  [ТС]
Прошу прощения, файл не прикрепился в первый раз, вот файл -

таблица.xlsx

Добавлено через 8 минут
Суть задачи заключается в следующем:

В пустой excel-файл вставляется исходная таблица с тремя столбцами и содержащейся в них информацией (в данном случае координаты X и Y)

После чего применяется макрос, который добавляет к исходному виду таблицы столбец с названием "Координаты" и автоматически заполняет в нем значения, в виде сцепленных значений координат соответствующей строки таблицы.
0
3 / 2 / 1
Регистрация: 05.01.2019
Сообщений: 29
14.01.2020, 22:29
Лучший ответ Сообщение было отмечено Stan1991 как решение

Решение

Тогда вот так

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub Добавить_координаты()
 Application.ScreenUpdating = 0
 Application.Calculation = xlCalculationManual
 Application.EnableEvents = 0
 ActiveSheet.DisplayPageBreaks = 0
 Application.DisplayStatusBar = 0
 Application.DisplayAlerts = 0
 Application.ReferenceStyle = 0
 ActiveSheet.UsedRange
 
Lastrow = Application.Max(Application.IfError(Application.Match(9E+307, Range("A:A"), 1), 0), Application.IfError(Application.Match("", Range("A:A"), -1), 0))
Range(Cells(4, 1), Cells(Lastrow, 1)).Copy Destination:=Range(Cells(4, 4), Cells(Lastrow, 4))
Cells(4, 4).Value = "Координаты"
y = Range(Cells(5, 2), Cells(Lastrow, 3)).Value
For z = 1 To UBound(y)
y(z, 1) = y(z, 1) & " " & y(z, 2)
Next
[D5].Resize(z - 1) = y
 
 Application.ScreenUpdating = 1
 Application.Calculation = xlCalculationAutomatic
 Application.EnableEvents = 1
 Application.DisplayStatusBar = 1
 Application.DisplayAlerts = 1
End Sub
Вложения
Тип файла: xls dobav_koordinaty.xls (34.5 Кб, 5 просмотров)
1
0 / 0 / 0
Регистрация: 13.01.2020
Сообщений: 11
14.01.2020, 22:39  [ТС]
Zeroman, огромное спасибо ! То, что надо !
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
15.01.2020, 00:56
Если то, что надо, то можно чуть упростить:
Visual Basic
1
2
3
4
5
Sub tt()
    Dim a, i&: a = [a4].CurrentRegion.Value: a(1, 1) = "Źīīšäčķąņū"
    For i = 2 To UBound(a): a(i, 1) = a(i, 2) & " " & a(i, 3): Next
    With [D4].Resize(UBound(a)): .Value = a: .Borders.Weight = xlThin: End With
End Sub
1
3 / 2 / 1
Регистрация: 05.01.2019
Сообщений: 29
15.01.2020, 01:37
Уважаемый Hugo121,
Поясните плиз. чем принципиально проще?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
15.01.2020, 01:49
Принципиально ничем. Чуть.
0
3 / 2 / 1
Регистрация: 05.01.2019
Сообщений: 29
15.01.2020, 01:50
Вам плюсик нужен?
Я поставлю
1
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
15.01.2020, 02:02
Я обещал CurrentRegion:
Цитата Сообщение от Hugo121 Посмотреть сообщение
Может достаточно оперировать c CurrentRegion
Плюс не надо, а Вам я уже поставил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2020, 02:02
Помогаю со студенческими работами здесь

Определение ближайшего адреса ячейки, подходящего по углу
Добрый день форумчане. Возникла непростая проблема. Помогите ее решить. Суть проблемы такая. Есть основная ячейка (ее адрес...

Excel. Определение адреса ячейки по условию поиска и адрес следующей после нее
Здравствуйте. Все что смог найти по данному вопросу это как определить адрес формулами, а нужно vba. Потому пишу сюда. Имеется список в...

Команда для задания диапазона значений
подскажите какая команда есть (не могу вспомнить) как between только мне нужно примерно так как с годами: выглядить должно так:...

Определение диапазона ячеек через переменную для создания графиков
Помогите пожалуйста правильно задать диапазон через переменную. Нужно что бы график создавался по двум столбца в не зависимости от их...

Excel, установить формат "почтовый индекс" для ячейки/диапазона
Как установить формат почтовый индекс для ячейки или диапазона? Есть там предустановленные значения?


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru