Excel: Jak generować dynamiczne tabele na podstawie wartości innej tabeli

0

W programie Excel chciałbym wygenerować dynamiczną tabelę opartą na wartościach w innej komórce.

Nigdy wcześniej tego nie robiłem, więc nie znam terminologii ani technik. Nie jestem również pewien, czy Excel jest w stanie osiągnąć to, czego chcę.

Oto, co chciałbym zrobić:

1 - Wpisuję wartość do komórki obok Sum(tutaj $100).

2 - Następnie dystrybucji procent do 100% A, B, C, D:

[Table 1]

|------|--------------|
| Sum  |     $100     |
|------|--------------|

|------|--------------|    
| Unit | Distribution |
|------|--------------|
| A    |     0.5      |
|------|--------------|
| B    |              |
|------|--------------|
| C    |              |
|------|--------------|
| D    |     0.5      |
|------|--------------|

Ai Dma po 50% Bi Cma 0%. Powyższa struktura tabeli powinna być zawsze taka sama.

Teraz chciałbym automatycznie wygenerować drugą tabelę dynamicznie, na podstawie wprowadzonych wartości komórek w tabeli 1, co daje wynik:

[Table 2]

|------|--------------|    
| Unit |    Value     |
|------|--------------|
| A    |     $50      |
|------|--------------|
| D    |     $50      |
|------|--------------|

Przez dynamiczne generowanie tabeli mam na myśli, że tylko wartości Ai Bsą generowane, podczas gdy Ci Dnie są generowane, ponieważ ich wartości rozkładu wynosiły 0%.

Z drugiej strony inna dystrybucja wygenerowałaby inną tabelę:

[Table 1]

|------|--------------|
| Sum  |     $100     |
|------|--------------|

|------|--------------|    
| Unit | Distribution |
|------|--------------|
| A    |     0.75     |
|------|--------------|
| B    |              |
|------|--------------|
| C    |     0.125    |
|------|--------------|
| D    |     0.125    |
|------|--------------|

[Table 2]

|------|--------------|    
| Unit |    Value     |
|------|--------------|
| A    |     $75      |
|------|--------------|
| C    |     $12.50   |
|------|--------------|
| D    |     $12.50   |
|------|--------------|

Dlaczego chcę dynamicznie generować tabelę 2: Ponieważ w rzeczywistości mam dużą liczbę potencjalnych „jednostek” do dystrybucji, z pewną różną arytmetyką, i chcę jedynie uzyskać spójnie ułożony wynik, który ma wartości> 0 $. Skopiuję / wkleję te dane do mojej aplikacji księgowej.

Pytania :

1) Jaka jest prawidłowa „terminologia” i „techniki” do tego, co próbuję osiągnąć? Proszę o to, aby móc znaleźć zasoby online, na wypadek, gdyby nikt nie mógł mi pomóc w konkretnym przypadku użycia. Czy używam czegoś takiego jak tabele przestawne, zakresy dynamiczne itp.? (Nie mam z nimi doświadczenia) . Byłbym bardzo wdzięczny za jak najwięcej szczegółów.

2) Najlepszy przypadek, czy możesz mi nawet pomóc w rozwiązaniu problemu dla powyższych potrzeb? Jeśli nie w pełni, czy są jakieś pewne narzędzia i / lub formuły Excela, o których powinienem wiedzieć (coś w rodzaju dynamicznych tabel filtrujących dla wartości> 0)?

Winterflags
źródło
Spójrz w formuły , coś w rodzaju =B$1 * B5:, wypełnione w tabeli 2 powinny działać (przy założeniu obliczenia.
cybernetic.nomad
@ cybernetic.nomad Wiem o mnożeniu komórek, ale to nie bierze pod uwagę warunkowego generowania wartości tabeli z etykietami. Chyba że można utworzyć automatyczny filtr zawierający tylko wartości> 0 i ich etykiety?
Winterflags,
Aby mieć tylko wartości powyżej Zera: =IF(B$1&B5>0, B$1*B5,"")chociaż w tym momencie jestem coraz mniej pewien, czego chcesz. Możesz sprawdzić to się więc wszyscy możemy być pewni, że mówimy o tym samym.
cybernetic.nomad
@ cybernetic.nomad Zredagowałem mój przykład, dodając więcej wierszy.
Winterflags,
Można to zrobić dość łatwo za pomocą VBA, jeśli chcesz spróbować.
Zack

Odpowiedzi:

1

OP tutaj - byłem w stanie sprawić, że ta praca jest teraz całkiem OK, dlatego dołączam moje „rozwiązanie” w celach informacyjnych. Nie jestem jednak pewien, czy to najlepsze podejście.

Utworzyłem dwie tabele z obliczeniami z tabeli 2 w oparciu o odpowiednie formuły z tabeli 1.

Następnie dodałem filtr do tabeli 2, wyświetlając tylko wiersze o wartości większej niż 0 na podstawie komórek w odpowiedniej kolumnie. Aby dodać filtr, naciśnij strzałkę w dół kolumny tabeli, według której chcesz filtrować.

To odfiltrowuje wiersze, które mają puste wartości; jednak nie aktualizuje dynamicznie filtrowania po zmianie danych w tabeli 1.

Aby dynamicznie aktualizować tabelę 2 na podstawie danych wejściowych z tabeli 1, zapisałem plik jako plik Excel z obsługą makr (Zapisz jako> Skoroszyt z obsługą makr Excel, .xlsm) i dodałem kod VBA z tej odpowiedzi: https: //superuser.com/a/501736/455679

Aby dodać kod VBA, kliknij prawym przyciskiem myszy Arkusz na dolnym pasku programu Excel (zwykle Arkusz1 ), a następnie kliknij polecenie Wyświetl kod z menu kontekstowego. Następnie wklej i zapisz następujący kod, gdzie Table2powinna być nazwa faktycznie filtrowanej tabeli:

Private Sub Worksheet_Change(ByVal Target As Range)
    With ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table2")
         .AutoFilter.ApplyFilter
    End With
End Sub

Wartości niefiltrowane:

wprowadź opis zdjęcia tutaj

Wartości filtrowane dynamicznie:

wprowadź opis zdjęcia tutaj

Zauważ, że z powodu filtrowania wierszy Tabela 1 i Tabela 2 nie powinny dzielić tych samych wierszy - ponieważ mogłoby to odfiltrować tabelę 1 na podstawie jej własnych wartości.

Winterflags
źródło