Excel Makro - dynamický výber stĺpcov

  • Problém
  • Riešenie
  • Poznámka

Problém

Práve začínam učiť makrá programu Excel. Pracoval som na liste, kde musím dynamicky vyberať stĺpec na základe názvu záhlavia stĺpca. Nechaj ma vysvetliť.

Povedzte, že existuje hárok programu Excel, ktorý obsahuje nasledujúce stĺpce (od A1 po D1):

 RecNo Cust_ID Cust_Name Contact_Num 

Pod nimi sú prítomné údaje o zákazníkoch. Teraz chcem extrahovať len Cust_ID (zo stĺpca B) a Cust_Name (zo stĺpca C) pre všetky záznamy.

Problém je však v tom, že nie je nutné, aby bol názov Cust_ID vždy v stĺpci B. Hoci nadpis by bol vždy Cust_ID, jeho umiestnenie by sa mohlo zmeniť na stĺpec C v niektorom inom hárku, ktorý bol vygenerovaný, a namiesto toho by mohlo byť prítomné meno Cust_Name Stĺpec B (dva stĺpce, ktoré sa majú extrahovať, boli zamenené).

Pomocou funkcie zhody som schopný určiť polohu stĺpca, ale potom nemôžem vybrať tento stĺpec.

Funkcia, ktorú som použil na určenie čísla stĺpca, je uvedená nižšie:

 WorksheetFunction.Match ("Cust_ID", rozsah ("A1: D1"), 0) 

Riešenie

Stačí ich použiť:

 'Stanovenie rozsahu dátového listu. Dim lngLastRow As Long Dim lngLastCol as Long Dim varDataSelect As Variant 'Výber riadkov a stĺpcov dynamicky. Select.End (xlDown) .Vyberte lngLastRowNum = ActiveCell.Row Selection.End (xlToRight) .Vyberte lngLastCol = ActiveCell.Column 'Názov pracovného listu "MonthlyReceivedClaims_Data" začína v riadku 1 stĺpca 1' a končí na ": R" & lngLastRowNum & "C" & lngLastCol varDataSelect = "MonthlyReceivedClaims_Data! R1C1: R" & lngLastRowNum & "C" & lngLastCol ActiveWorkbook.PivotCaches.Add (SourceType: = xlDatabase, SourceData: = _ varDataSelect) .CreatePivotTable _ TableDestination: = "", TableName: = "PivotTable1", DefaultVersion: = _ xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination: = ActiveSheet.Cells (3, 1) 

'Tiež pomáha používať funkciu makro záznamu v časti Nástroje.

'Kliknite na záznam. Vytvorte prehľad alebo kontingenčnú tabuľku tak, ako chcete.

Potom kliknite na položku Zastaviť záznam a upraviť kód podľa potreby.

Poznámka

Vďaka AM za tento tip na fóre.

Predchádzajúci Článok Nasledujúci Článok

Najlepšie Tipy