Всем доброго здоровья! Прошу помощи в непосильной для меня задачке!
Помогите определить адреса каждой таблички на листе (файл прилагаю)! Переборами по ячейкам, понимаю, можно - но может есть какой-то более быстрый способ?
Это надо для обработки данных в каждой маленькой табличке по отдельности - например для сортировки... Таблички динамические
на борту Ехель 2016 х64
Заранее благодарю!
Всем доброго здоровья! Прошу помощи в непосильной для меня задачке!
Помогите определить адреса каждой таблички на листе (файл прилагаю)! Переборами по ячейкам, понимаю, можно - но может есть какой-то более быстрый способ?
Это надо для обработки данных в каждой маленькой табличке по отдельности - например для сортировки... Таблички динамические
Проще всего было бы сделать все таблицы "умными", дать каждой свое имя и по нему обращаться Поскольку они не умные, то проверяем на то, что первые 3 ячейки шапки объединены (можно на что-то другое, на что захотите) Так находим таблицу 7 [vba]
Код
Sub tt() x_ = 7 ad_ = Cells.Find(What:=x_, After:=Cells(1), LookIn:=xlValues, LookAt:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Address If Range(ad_).MergeArea.Count = 3 Then d_ = Range(ad_).CurrentRegion.Address(0, 0) Else ad1_ = ad_ Do ad_ = Cells.FindNext(After:=Range(ad_)).Address If ad1_ = ad_ Then Exit Do If Range(ad_).MergeArea.Count = 3 Then d_ = Range(ad_).CurrentRegion.Address(0, 0) Exit Do End If Loop End If End Sub
[/vba]
Проще всего было бы сделать все таблицы "умными", дать каждой свое имя и по нему обращаться Поскольку они не умные, то проверяем на то, что первые 3 ячейки шапки объединены (можно на что-то другое, на что захотите) Так находим таблицу 7 [vba]
Код
Sub tt() x_ = 7 ad_ = Cells.Find(What:=x_, After:=Cells(1), LookIn:=xlValues, LookAt:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Address If Range(ad_).MergeArea.Count = 3 Then d_ = Range(ad_).CurrentRegion.Address(0, 0) Else ad1_ = ad_ Do ad_ = Cells.FindNext(After:=Range(ad_)).Address If ad1_ = ad_ Then Exit Do If Range(ad_).MergeArea.Count = 3 Then d_ = Range(ad_).CurrentRegion.Address(0, 0) Exit Do End If Loop End If End Sub