Excel Macro - Динамичен избор на колона

  • Проблем
  • Решение
  • Забележка

Проблем

Аз просто започвам да изучавам макроси на Excel. Работя върху лист, в който трябва да избера колона динамично, въз основа само на името на заглавието на колоната. Нека обясня.

Да кажем, че има Excel лист, който съдържа следните колони (от A1 до D1):

 Кликнете върху Cust_ID Cust_Name Contact_Num 

Под тях има налични данни за клиентите. Сега искам да извлечем само Cust_ID (от колона B) и Cust_Name (от колона C) за всички записи.

Проблемът обаче е, че не е необходимо Cust_ID винаги да бъде в колона В. Въпреки, че заглавието винаги ще бъде Cust_ID, местоположението му може да се промени в колона C в друг лист, който е генериран и Cust_Name вместо това може да присъства в Колона В (двете колони, които трябва да бъдат извлечени, са разменени).

Използвайки функцията match, мога да определя позицията на колоната, но след това не мога да избера тази колона.

Функцията, която използвах за определяне на номера на колоната, е дадена по-долу:

 WorksheetFunction.Match ("Cust_ID", Обхват ("A1: D1"), 0) 

Решение

Използвайте само тези:

 'Определяне на обхвата на листа с данни. Dim lngLastRow As Long Dim lngLastCol As Long DimDataSelect as Variant 'Изберете динамични редове и колони. Selection.End (xlDown). Избери lngLastRowNum = ActiveCell.Row Selection.End (xlToRight). Изберете lngLastCol = ActiveCell.Column 'Име на работния лист "MonthlyReceivedClaims_Data" започнете от ред 1 Колона 1' и завършете на ": R" & lngLastRowNum & "C" & lngLastCol varDataSelect = "MonthlyReceivedClaims_Data! R1C1: R" & lngLastRowNum & "C" & lngLastCol ActiveWorkbook.PivotCaches.Add (SourceType: = xlDatabase, SourceData: = _ varDataSelect). = "PivotTable1", DefaultVersion: = _ xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination: = ActiveSheet.Cells (3, 1) 

Също така е полезно да използвате функцията за запис на макроси в Инструменти.

Щракнете върху запис. Направете отчетната или обобщената таблица така, както искате.

След това щракнете върху stop record и редактирайте кода, ако е необходимо.

Забележка

Благодаря на AM за този съвет на форума.

Предишна Статия Следваща Статия

Топ Съвети