Як я можу використовувати структуровані посилання на стовпець у макросі Excel?


0

Ось приклад, який пояснить речі:

Sheets("Plot Data July").Select
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=2
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=4

Отже, як ви бачите вище, Field:=2є відносним посиланням на друге поле таблиці під назвою "tPDJuly". Тож якщо я додаю більше стовпців, це число не оновлюється. Поле насправді називається "Оцінка" в таблиці. То чи існує спосіб кодування цього, щоб незалежно від того, в якому стовпчику він знаходиться, "Оцінка" завжди оновлюється?

Я думаю, що одне рішення полягає в тому, що ми додаємо рядок, який знаходить, який номер стовпця для "Оцінка"?

ОНОВЛЕННЯ: Це повне твердження

Sheets("Plot Data July").Select
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=4, Criteria1:="0"
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=2, Criteria1:="J4"

де Field:=4насправді поле Excludeв цій таблиці , тобто tPDJuly[Exclude]і аналогічно Field:=2єGrade

Тому я хочу , щоб змінити ці постійні посилання на 2і 4 в чому - то більш гнучке.

Відповіді:


2

Перетягування цієї нитки назад у життя. Я сьогодні намагався чогось досягти, і через грубу силу, і проби та помилки, я знайшов відповідь, яка не передбачає безладного вибору заяви чи наявності активованого аркуша.

TableName.Range.Autofilter Field:=TableName.ListColumns("Column Name").Index, _
    Criteria1:="SearchString"

1

Ви повинні мати можливість вибрати стовпець, використовуючи властивості таблиці, із наступним:

sheets("Plot Data July").select    
range("tPDJuly[Grade]").select

Тут слід вибрати стовпець вашої оцінки. Цитати, здається, важливі при прив'язці значень до еталону.

Якщо ви хочете обидва стовпці, вам потрібно трохи змінити їх:

sheets("Plot Data July").select    
range("tPDJuly[Grade],tPDJuly[Column4]").select

Так тоді це було б Field:=range("tPDJuly[Grade]").select?
Ешвар

Вам не знадобиться Поле: зовсім.
дав

Тоді рішення було б ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter range("tPDJuly[Grade],tPDJuly[Column4]").select?
Ешвар

Коли я спробував це на своєму тестовому робочому аркуші, мені нічого не потрібно було, крім як, range("tPDJuly[Grade],tPDJuly[Column4]").selectякщо я опинився на аркуші з таблицею. Інакше мені потрібно було sheets("Plot Data July").selectтакож додати . Мені ніколи не потрібно було користуватися activesheet.listobjects().range.autofilterвзагалі.
дав

Ні, не працює, коли потрібно використовувати критерії. Ви перевіряли оновлення запитання?
Ешвар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.