Wydaje się, że jest to prosta tabela przestawna do nauki. Chciałbym policzyć unikalne wartości dla określonej wartości, według której się grupuję.
Na przykład mam to:
ABC 123
ABC 123
ABC 123
DEF 456
DEF 567
DEF 456
DEF 456
To, czego chcę, to tabela przestawna, która pokazuje mi to:
ABC 1
DEF 2
Prosta tabela przestawna, którą utworzę, po prostu daje mi to (liczbę wierszy):
ABC 3
DEF 4
Ale zamiast tego chcę mieć liczbę unikalnych wartości.
To, co naprawdę próbuję zrobić, to dowiedzieć się, które wartości w pierwszej kolumnie nie mają takiej samej wartości w drugiej kolumnie we wszystkich wierszach. Innymi słowy, „ABC” jest „dobre”, „DEF” jest „złe”
Jestem pewien, że jest łatwiejszy sposób, ale pomyślałem, że spróbuję tabeli przestawnej ...
excel
excel-formula
pivot-table
user1586422
źródło
źródło
Odpowiedzi:
Wstaw trzecią kolumnę i w komórce
C2
wklej tę formułęi skopiuj go. Teraz utwórz swoją oś w oparciu o pierwszą i trzecią kolumnę. Zobacz migawkę
źródło
=IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)
(naciśnij Ctrl-Shift-Enter podczas wprowadzania formuły, aby uzyskać{}
wokół niej).AKTUALIZACJA: Możesz to teraz zrobić automatycznie w programie Excel 2013. Utworzyłem to jako nową odpowiedź, ponieważ moja poprzednia odpowiedź faktycznie rozwiązuje nieco inny problem.
Jeśli masz tę wersję, wybierz dane, aby utworzyć tabelę przestawną, a podczas tworzenia tabeli upewnij się, że pole wyboru „Dodaj te dane do modelu danych” jest zaznaczone (patrz poniżej).
Następnie po otwarciu tabeli przestawnej normalnie utwórz wiersze, kolumny i wartości. Następnie kliknij pole, dla którego chcesz obliczyć odrębną liczbę, i edytuj Ustawienia wartości pola:
Na koniec przewiń w dół do ostatniej opcji i wybierz „Odrębna liczba”.
Powinno to zaktualizować wartości tabeli przestawnej, aby pokazać dane, których szukasz.
źródło
Chciałbym dodać do tego zestawu dodatkową opcję, która nie wymaga formuły, ale może być pomocna, jeśli chcesz policzyć unikalne wartości w zestawie w dwóch różnych kolumnach. Korzystając z oryginalnego przykładu, nie miałem:
i chcesz, aby wyglądał jak:
Ale coś bardziej jak:
i chciałem, żeby wyglądało to następująco:
Najlepszym sposobem na przeniesienie moich danych do tego formatu, a następnie dalsze manipulowanie nimi, jest użycie:
Po wybraniu opcji „Suma uruchomiona w” wybierz nagłówek dodatkowego zestawu danych (w tym przypadku będzie to nagłówek lub tytuł kolumny zestawu danych zawierającego 123, 456 i 567). W ten sposób uzyskasz maksymalną wartość z łączną liczbą elementów w tym zestawie w ramach podstawowego zestawu danych.
Następnie skopiowałem te dane, wkleiłem je jako wartości, a następnie umieściłem w innej tabeli przestawnej, aby łatwiej nimi manipulować.
Do Twojej wiadomości, miałem około ćwierć miliona wierszy danych, więc działało to o wiele lepiej niż niektóre podejścia oparte na formułach, szczególnie te, które próbują porównać dwie kolumny / zestawy danych, ponieważ ciągle zawieszały aplikację.
źródło
Najłatwiejszym sposobem jest użycie
Distinct Count
opcji podValue Field Settings
( kliknij lewym przyciskiem myszy pole wValues
panelu). Opcja dlaDistinct Count
znajduje się na samym dole listy.Oto przed (TOP; normal
Count
) i po (BOTTOM;Distinct Count
)źródło
Zobacz unikalne przedmioty Debry Dalgleish's Count
źródło
Nie jest konieczne sortowanie tabeli, aby poniższa formuła zwracała 1 dla każdej unikalnej wartości.
zakładając, że zakres tabeli dla danych przedstawionych w pytaniu to A1: B7 wprowadź w komórce C1 następującą formułę:
Skopiuj tę formułę do wszystkich wierszy, a ostatni wiersz będzie zawierał:
Powoduje to zwrócenie 1 przy pierwszym znalezieniu rekordu i 0 dla wszystkich później.
Po prostu zsumuj kolumnę w tabeli przestawnej
źródło
=IF(COUNTIF($B$1:$B1,B1),1,0)
- w ten sposób countif jest uruchamiany tylko raz!Moje podejście do tego problemu było trochę inne niż to, co widzę tutaj, więc podzielę się.
Uwaga: chciałbym dołączyć obrazy, aby było to jeszcze łatwiejsze do zrozumienia, ale nie mogę, ponieważ to mój pierwszy post;)
źródło
Odpowiedź Siddhartha jest niesamowita.
jednak ta technika może powodować problemy podczas pracy z dużym zestawem danych (mój komputer zawiesił się na 50 000 wierszy). Niektóre metody mniej obciążające procesor:
Pojedyncza kontrola niepowtarzalności
Użyj formuły, która analizuje mniej danych
Wiele kontroli niepowtarzalności
Jeśli chcesz sprawdzić niepowtarzalność w różnych kolumnach, nie możesz polegać na dwóch rodzajach.
Zamiast,
Dodaj formułę obejmującą maksymalną liczbę rekordów dla każdej grupy. Jeśli ABC może mieć 50 wierszy, formuła będzie
źródło
=A2&B2
. Następnie dodaj kolumnę D i umieść w D2=IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0)
. Wypełnij oba w dół. Podczas gdy to nadal wyszukuje od początku całego zakresu, zatrzymuje się, gdy znajdzie pierwszy, i zamiast pomnożyć wartości z 50000 wierszy razem, po prostu musi zlokalizować wartość - więc powinno działać znacznie lepiej.Excel 2013 może liczyć oddzielnie w przestawnych. Jeśli nie ma dostępu do 2013, a jest to mniejsza ilość danych, robię dwie kopie surowych danych, aw kopii b zaznaczam obie kolumny i usuwam duplikaty. Następnie wykonaj obroty i policz swoją kolumnę b.
źródło
Możesz użyć COUNTIFS dla wielu kryteriów,
= 1 / COUNTIFS (A: A, A2, B: B, B2), a następnie przeciągnij w dół. Możesz w nim umieścić dowolną liczbę kryteriów, ale ich przetworzenie zwykle zajmuje dużo czasu.
źródło
Krok 1. Dodaj kolumnę
Krok 2. Użyj wzoru =
IF(COUNTIF(C2:$C$2410,C2)>1,0,1)
w pierwszym rekordzieKrok 3. Przeciągnij go do wszystkich rekordów
Krok 4. Przefiltruj „1” w kolumnie za pomocą formuły
źródło
Możesz utworzyć dodatkową kolumnę do przechowywania unikalności, a następnie zsumować to w tabeli przestawnej.
Chodzi mi o to, że komórka
C1
zawsze powinna być1
. KomórkaC2
powinna zawierać formułę=IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1)
. Skopiuj tę formułę, aby komórkaC3
zawierała=IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1)
i tak dalej.Jeśli masz komórkę nagłówka, będziesz chciał przenieść je wszystkie w dół wiersza, a twoja
C3
formuła powinna być=IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1)
.źródło
Jeśli masz posortowane dane ... sugeruję użycie następującego wzoru
Jest to szybsze, ponieważ do obliczeń wykorzystuje mniej komórek.
źródło
Zwykle sortuję dane według pola, które potrzebuję, aby dokładnie policzyć, a następnie używam JEŻELI (A2 = A1,0,1); otrzymasz wtedy 1 w górnym wierszu każdej grupy identyfikatorów. Proste i nie zajmuje dużo czasu, aby obliczyć na dużych zbiorach danych.
źródło
Możesz również użyć dla kolumny pomocnika
VLOOKUP
. Przetestowałem i wygląda trochę szybciej niżCOUNTIF
.Jeśli używasz nagłówka, a dane zaczynają się w komórce
A2
, w dowolnej komórce w wierszu użyj tej formuły i skopiuj we wszystkich innych komórkach w tej samej kolumnie:źródło
Znalazłem łatwiejszy sposób na zrobienie tego. Odnosząc się do przykładu Siddarth Rout, jeśli chcę policzyć unikalne wartości w kolumnie A:
źródło
B
. Jak dostosujesz to do pracy z wieloma kolumnami?