
Verwenden von Excel 365
Hier ist ein Beispiel, an dem ich gearbeitet habe und das meinem Ziel ziemlich nahe kommt:https://docs.google.com/spreadsheets/d/1zZiFDaUhuZAhyHm3HZkcZrUl9KEoV97N/edit?usp=sharing&ouid=108210493177158563166&rtpof=true&sd=true
Im Grunde habe ich die Daten A, B und C und für jedes eindeutige A mit mehr als einem Eintrag in der Tabelle möchte ich B gegenüber C in einem Streudiagramm mit einer Linie darstellen. Ich entwerfe eine Vorlage und sie muss mit allen Permutationen von Daten funktionieren.
Was ich habe, kommt dem ziemlich nahe, mit ein paar Problemen, die ich nicht beheben konnte:
Ich muss genügend Platz für alle möglichen Werte von A und B in den Tabellen reservieren. Das ist kein großes Problem, da die Datensätze, mit denen ich im Moment arbeite, ziemlich klein sind, aber es wäre schön, wenn es vollständig dynamisch wäre und eine beliebige Anzahl von Werten verarbeiten könnte.
Die Legende zeigt leere Einträge für alle nicht verwendeten Spalten der Tabelle. Ich möchte nur die Einträge anzeigen, für die ich Daten habe.
Die Linie ist für nicht benachbarte Werte von B nicht verbunden (siehe Zeile 3 als Beispiel). Ich möchte, dass sie innerhalb jeder Reihe verbunden ist.
Ich hoffe, das ist verständlich. Sie können gern weitere Fragen stellen.
Dank im Voraus.
Antwort1
Folgendes müssen Sie tun, um jedes kleine bisschen dynamisch zu gestalten (siehe Animation):
- Erstens, anstatt leere Bereiche zu verwenden, um zu iterieren, verwenden Sie
Structured References
akaTables
--> Tabelle mit dem NamenTable1
- Für Spalten verwendete Formeln
F3:G16
,J2:O8
die nach und nach erweitert werden.
• In der Zelle verwendete FormelF3
=LET(
_Data, Table1,
_A, TAKE(_Data,,1),
_Uniq, UNIQUE(_A),
HSTACK(_Uniq, COUNTIF(_A,_Uniq)))
• In der Zelle verwendete FormelJ2
=LET(
_Data, Table1,
_A, TAKE(_Data,,1),
_B, INDEX(_Data,,2),
_C, TAKE(_Data,,-1),
_UniqA, TOROW(UNIQUE(_A)),
_UniqB, UNIQUE(_B),
_ArrayB, VSTACK("",_UniqB),
_DataBody, VSTACK(_UniqA&"A", MAKEARRAY(ROWS(_UniqB), COLUMNS(_UniqA), LAMBDA(r,c,
FILTER(_C, (INDEX(_UniqA,1,c)=_A)*(INDEX(_UniqB,r)=_B),NA())))),
HSTACK(_ArrayB, _DataBody))
Die obige Formel kann auch mit LAMBDA()
--> definiert werden. Sie müssen die obige Formel also in LAMBDA()
--> einschließen.parameter_or_calculation
as array
und ersetzen Sie das Table1
as array
. So wird es und einzutragen inrefers to
bei der Definition des Namens als
=LAMBDA(array, LET(_Data, array, the rest continues as is)
Geben Sie im Excel
Blatt Folgendes ein:
=SCATTER_PLOT(Table1)
MAKEARRAY()
Beachten Sie, dass ich anstelle von eineLAMBDA()
Hilfsfunktion verwendet habeREDUCE()
. Sie können auch verwendenREDUCE()
, aber dies ist eine ressourcenintensive Funktion und nicht so effizient wieMAKEARRAY()
das Stapeln von Daten.
- Achten Sie beim Einfügen darauf, den Datenbereich „Von “ und „Bis“
Scatter with smooth lines and markers
auszuwählen, indem Sie das Kontrollkästchen „Leere Zellen“ aktivieren.J2:O8
Connect data points with line
Hidden and
- Ich habe auch
Conditional Formatting
für die Grenzen verwendet. hier ist dieExcel.
Antwort2
Mögliche Modifikationen:
So schaffen Sie Platz für mehr Daten:
F3
:=UNIQUE(FILTER(B:B,ISNUMBER(B:B)))
G3
:=COUNTIF(B:B,F3#)
K3
:=TRANSPOSE(F3#)
K4
: :=K3# & " A"
J5
: in den erforderlichen Bereich kopieren. Es ist besser, hier wirklich benötigte Bereiche zu verwenden, zum=UNIQUE(FILTER(C:C,ISNUMBER(C:C)))
K5
Beispiel=FILTER($D:$D,($B:$B=K$3)*($C:$C=$J5),#N/A)
=FILTER($D$1:$D$100,($B$1:$B$100=K$3)*($C$1:$C$100=$J5),#N/A)
Es hängt davon ab
Chart data range
. Ich kenne keine Methode, es dynamisch zu machen (ohne VBA). Wir können eine Formel definieren, die diesen Datenbereich dynamisch definiert. Wenn wir sie jedoch hier verwenden, wird sie sofort berechnet und als statische Adresse gespeichert.Um eine Verbindung zwischen Punkten herzustellen, sollten Sie eine Diagrammoption ändern:
Select Data Source > Hidden and Empty Cells > Connect data points with line