Ich habe eine Tabelle, die wie folgt aussieht:
https://docs.google.com/spreadsheets/d/1BN3GNRFCsBeHu9gQaKzIo7bfFRkcDqMJ6VMtidEwPD4/edit?usp=sharing
In Spalte A gibt es eine festgelegte Liste von Namen. Diese Namen werden in jeder der folgenden Spalten von C bis G einmal in zufälliger Reihenfolge angezeigt.
Wie kann ich ein Ergebnis erzeugen, das ich in Spalte I manuell erstellt habe? Ich würde gerne wissen, welche Namen in den Zeilen 1-10 in den Spalten C bis G am häufigsten vorkommen und welche Namen dann die beste durchschnittliche Zeilennummer haben.
Ich habe manuell herausgefunden, dass "Name C6" mit 4 Auftritten am häufigsten auftauchte. Dann fand ich vier weitere Namen mit drei Top-10-Auftritten und sortierte sie nach der besten durchschnittlichen Zeilennummer, wie in Spalte L gezeigt.
Kann man das mit einer Formel oder ähnlichem machen? Es kann in Excel oder Google Docs sein. Ich würde es manuell machen, aber wenn es 10 oder mehr Spalten gibt, wird es sehr imposant.
Jede Hilfe wäre sehr dankbar! Vielen Dank :)
quelle
Antworten:
Dieser Code erstellt die gewünschte Tabelle mit den unten gezeigten Daten.
Code
Screenshots
Daten
Ergebnis
Erklärt
Der Namensbereich wird verwendet, um die Iteration mit zu starten. Zu Beginn des Datenbereichs wird ein Zähler für diesen bestimmten Namen sowie ein Array festgelegt, das die Zeilennummern enthält.
Wenn ein Name mehrmals gefunden wurde (
!= 0
), addieren Sie die Zeilennummern und fügen Sie die Daten zum Ausgabearray hinzu. Dieses Array wird wiederum anhand der zweiten Spalte sortiert, und nur die ersten 6 Zeilen werden angezeigt.Hinweis
Ich konnte die Ergebnisse Ihres Blattes nicht reproduzieren. Höchstwahrscheinlich, weil die Daten beim Öffnen jedes Mal neu aktualisiert werden. Das Beispiel, das ich erstellt habe, enthält statische Daten. Die im Skript gemachten Anmerkungen dienen einer Funktion. Wenn die benutzerdefinierte Funktion im Arbeitsblatt ausgewählt ist, enthält das Hilfe-Popup diese Informationen (JsDoc).
Beispiel
Ich habe eine Beispieldatei für Sie erstellt: myTable
Fügen Sie den Code unter Extras > Skripteditor hinzu, klicken Sie auf die Schaltfläche Speichern, und Sie können loslegen .
quelle
Hier finden Sie einen Link zur öffentlichen Live-Tabelle mit der Implementierung dieser Lösung. Hier finden Sie einen Screenshot als Referenz. Hier ist die Problembeschreibung:
Sortieren Sie die Namen anhand einer Liste mit 5 Neuanordnungen dieser Namen nach (der Häufigkeit, mit der der Name in den Top 10 aufsteigend angezeigt wird) und dann nach (dem Durchschnitt der Top 10-Platzierungen des Namens absteigend). .
Erklärung - Spalten
Erklärung - Gleichungen
' v ' kennzeichnet das Kopieren / Einfügen zum Rest der Spalte
' > ' gibt an, dass die angegebene Zeile kopiert / eingefügt werden soll
=countif($C$1:$G$10,A1)
=sort($A$1:$A$27,arrayFormula(randbetween(sign(row($A$1:$A$27)),1000000)),true)
=max($B$1:$B$60)
=max(FILTER($B$1:$B$60,$B$1:$B$60<H2))
=countif($B$1:$B$60,"="&H2)
=MATCH(M2,$B$1:$B$60,0)
=If(M3<M2,Match(M3,$B$1:$B$60,0), Match(M3,INDIRECT(K2),0)+J2)
="B"&J2+1&":B60"
=SORT(A1:B27,2,False)
N - Wenn dieser L-Name in den Top 10 von C angezeigt wird, suchen Sie die Zeile, in der er sich befindet, sonst 0. Wenn dieser L-Name in den Top 10 von D angezeigt wird, suchen Sie die Zeile, in der er sich befindet, sonst 0. usw. Addieren Sie nun diese Werte und dividieren Sie durch die Häufigkeit, mit der der Name L angezeigt wird, um den Durchschnitt zu erhalten
N2 v
OQ - Sortiere LN nach M aufsteigend und dann nach N absteigend
=SORT(L2:N28,2,False,3,True)
quelle