Excel Makro - Valg av dynamisk kolonne

  • Utgave
  • Løsning
  • Merk

Utgave

Jeg begynner å lære Excel-makroer. Jeg jobbet på et ark hvor jeg må velge en kolonne dynamisk, basert på bare kolonneoverskriftens navn. La meg forklare.

Si at det er et Excel-ark som inneholder følgende kolonner (fra A1 til D1):

 RecNo Cust_ID Cust_Name Contact_Num 

Under disse er det kundedata som er til stede. Nå vil jeg bare trekke ut Cust_ID (fra kolonne B) og Cust_Name (fra kolonne C) for alle postene.

Problemet er imidlertid at det ikke er nødvendig at Cust_ID alltid vil være i kolonne B. Selv om overskriften alltid vil være Cust_ID, kan plasseringen endre seg til kolonne C i et annet ark som er generert og Cust_Name kunne i stedet vært tilstede i Kolonne B (de to kolonnene som må utvinnes har blitt byttet ut).

Ved hjelp av kampfunksjonen kan jeg bestemme posisjonen til kolonnen, men etter at jeg ikke kan velge den kolonnen.

Funksjonen jeg har brukt til å bestemme kolonne nummer er gitt nedenfor:

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

Løsning

Bare bruk disse:

 'Bestemme dataark rekkevidde. Dim lngLastRow Så lenge Dim lngLastCol Så lenge Dim varDataSelect As Variant 'Velg rader og kolonner dynamisk. Selection.nd (xlDown) .Velg lngLastRowNum = ActiveCell.Row Selection.End (xlToRight) .Velg lngLastCol = ActiveCell.Column 'Navn på regnearket "MonthlyReceivedClaims_Data" start på rad 1 kolonne 1' og slutt på ": R" & lngLastRowNum & "C" & lngLastCol varDataSelect = "MonthlyReceivedClaims_Data! R1C1: R" & lngLastRowNum & "C" & lngLastCol ActiveWorkbook.PivotCaches.Add (SourceType: = xlDatabase, SourceData: = _ varDataSelect) .CreatePivotTable _ TableDestination: = "" Tabellnavn: = "PivotTable1", DefaultVersion: = _ xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination: = ActiveSheet.Cells (3, 1) 

'Det hjelper også å bruke rekordmakrofunksjonen under Verktøy.

'Klikk rekord. Lag rapport eller pivottabellen som du vil ha den.

Deretter klikker du på Stop Record og rediger koden etter behov.

Merk

Takk til AM for dette tipset på forumet.

Forrige Artikkel Neste Artikkel

Beste Tips