Makro Excel - Dynamiczny wybór kolumny

  • Kwestia
  • Rozwiązanie
  • Uwaga

Kwestia

Właśnie zaczynam uczyć się makr Excela. Pracowałem nad arkuszem, w którym muszę wybrać kolumnę dynamicznie, na podstawie nazwy nagłówka kolumny. Pozwól mi wyjaśnić.

Powiedzmy, że jest arkusz Excela, który zawiera następujące kolumny (od A1 do D1):

 RecNo Cust_ID Cust_Name Contact_Num 

Poniżej znajdują się dane klienta. Teraz chcę wyodrębnić tylko Cust_ID (z kolumny B) i Cust_Name (z kolumny C) dla wszystkich rekordów.

Problem polega jednak na tym, że nie jest konieczne, aby identyfikator Cust_ID zawsze znajdował się w kolumnie B. Chociaż nagłówek będzie zawsze identyfikatorem Cust_ID, jego lokalizacja może zmienić się na kolumnę C w innym wygenerowanym arkuszu, a zamiast tego nazwa Cust_Name mogłaby być obecna w Kolumna B (dwie kolumny, które należy wyodrębnić zostały zamienione).

Korzystając z funkcji dopasowania, jestem w stanie określić pozycję kolumny, ale potem nie mogę wybrać tej kolumny.

Funkcja, której użyłem do określenia numeru kolumny, jest podana poniżej:

 WorksheetFunction.Match („Cust_ID”, zakres („A1: D1”), 0) 

Rozwiązanie

Po prostu użyj tych:

 „Określanie zakresu arkusza danych. Dim lngLastRow As Long Dim lngLastCol As Long Dim varDataSelect As Variant 'Wybierz wiersze i kolumny dynamicznie. Selection.End (xlDown) .Wybierz lngLastRowNum = ActiveCell.Row Selection.End (xlToRight). Wybierz lngLastCol = ActiveCell.Column 'Nazwa arkusza roboczego' MonthlyReceivedClaims_Data 'zacznij od wiersza 1 Kolumna 1' i zakończ na ": R" & lngLastRowNum & "C" & lngLastCol varDataSelect = "MonthlyReceivedClaims_Data! R1C1: R" & lngLastRowNum & "C" & lngLastCol ActiveWorkbook.PivotCaches.Add (SourceType: = xlDatabase, SourceData: = _ varDataSelect) .CreatePivotTable _ TableDestination: = "", Nazwa tabeli: = "Tabela przestawna1", DefaultVersion: = _ xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination: = ActiveSheet.Cells (3, 1) 

„Pomaga także użyć funkcji makro zapisu w menu Narzędzia.

„Kliknij rekord. Utwórz raport lub tabelę przestawną, jak chcesz.

Następnie kliknij przycisk Zatrzymaj nagrywanie i edytuj kod w razie potrzeby.

Uwaga

Podziękowania dla AM za tę poradę na forum.

Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki