"Temporäre" Array-Formeln in Excel erstellen

580
J Woltman

Ich habe ein Diagramm, das eine empfohlene Zeile durchlaufen sollte. Normalerweise würde ich dies tun, indem ich für jedes Diagramm einen "empfohlenen" Wert habe. Ist es möglich, eine Formel zu haben, die eine Reihe von Werten wiederholt, sodass ich nicht wirklich eine Liste von "empfohlenen" Werten führen muss? Hier ist ein Screenshot-Beispiel

In meinem Kopf funktioniert es wie =MakeArray(2.23, 7)folgt : wobei 2,23 der Wert und 7 die Anzahl der Wiederholungen ist. Dann könnte ich das der Serie zuordnen und muss nicht wirklich eine weitere Serie von Daten führen, die mir eigentlich egal sind.

1
= REPT (2.23,7) kann Ihnen helfen, Sie können die Werte durch Zellenwerte usw. ersetzen. PeterH vor 5 Jahren 1
Es scheint, dass REPT nur eine Textzeichenfolge und kein Array zurückgibt. Ich konnte Excel nicht dazu bringen, die Werte anzuzeigen, die von = REPT (2.23,7) zurückgegeben wurden. J Woltman vor 5 Jahren 0
Sie können immer eine udf schreiben, die ein Array zurückgibt. Scott Craner vor 5 Jahren 0
Da ich UDFs für andere Teile meiner Tabelle schreibe, ist dies wahrscheinlich der richtige Weg. J Woltman vor 5 Jahren 0
Aber Sie können die UDF nicht direkt in der Grafik referenzieren, zumindest nicht, dass ich in den letzten 5 Minuten der Suche gefunden habe. Wenn Sie herausfinden, dass dies funktioniert, kommen Sie bitte zurück und beantworten Sie Ihre eigene Frage, in der Sie genau beschrieben haben, wie Sie es getan haben. Scott Craner vor 5 Jahren 0
Warum benötigen Sie einen Wert für jede Spalte, wenn Sie einen festen Wert zeichnen? Erstellen Sie einfach einen Punkt für die erste und letzte Spalte. Excel zeichnet eine Linie zwischen den Endpunkten. fixer1234 vor 5 Jahren 0
@ fixer1234 Danke für die Idee, ich werde damit experimentieren. J Woltman vor 5 Jahren 0
@ fixer1234 Ich habe es ausprobiert und es hat super funktioniert. Ich bin mir nicht sicher, welche Etikette / Normen für Superuser gelten. Soll ich meine Antwort akzeptieren, weil sie meine ursprüngliche Frage technisch beantwortet, oder sollte ich sie stattdessen mit Ihrer Lösung neu schreiben? J Woltman vor 5 Jahren 0
Eine andere Möglichkeit wäre, es zu Ihrer eigenen Antwort hinzuzufügen oder als zweite Antwort zu posten (da dies ein völlig anderer Ansatz ist). Was Sie als akzeptierte Antwort auswählen, ist vollständig Ihr Vorrecht als Autor der Frage. Sie entscheiden, welche Antwort für Sie am besten ist. Sie haben jetzt auch genug Vertreter, um alle Antworten, die Sie für hilfreich halten, zu bestätigen, zusätzlich dazu, eine Antwort als "die beste für Sie" zu akzeptieren (die Ihre eigene sein kann, aber Sie können nicht über Ihre eigenen Antworten abstimmen). fixer1234 vor 5 Jahren 0

3 Antworten auf die Frage

2
J Woltman

Bearbeitet: Das Folgende ist eine Lösung für die von mir gestellte Frage, ist aber möglicherweise nicht die beste Möglichkeit, "empfohlene" oder "Schwellenwert" -Zeilen bereitzustellen, was mein eigentliches Ziel war.

Technisch korrekte Antwort

Ich glaube, ich habe eine anständige Lösung gefunden:

  1. Erstellen Sie eine benutzerdefinierte Funktion (UDF), die ein Array zurückgibt, wie von @ScottCraner vorgeschlagen.
  2. Definieren Sie einen benannten Bereich, der auf diese Funktion verweist ("Aufrufe").
  3. Stellen Sie die Quelle der Serie auf den genannten Bereich ein.

Ein Beispiel für die ErgebnisseDie makroaktivierte Tabelle befindet sich auf meiner Website unter https://woltman.com/m/filer_public/cc/ba/ccba65d2-e29c-4208-b3be-53ead02845ff/arraysforchartdataexample.xlsm

Wahrscheinlich eine bessere Lösung

Diese Lösung folgt dem Vorschlag von @ fixer1234:

  1. Machen Sie ein Paar XY-Datenpunkte. Die Y-Werte sind Ihre empfohlenen Daten. Der erste X-Wert ist 1, der zweite X-Wert sind jedoch viele Balken in Ihrem Balkendiagramm.
  2. Erstellen Sie ein normales Balkendiagramm
  3. Fügen Sie dem Diagramm eine weitere Serie hinzu und setzen Sie den Reihentyp mit Linie auf XY.
  4. Stellen Sie die Quelldaten für die Serie auf das XY-Paar ein, das Sie in Schritt 1 erstellt haben.
  5. Excel wird die Serie auf die Sekundärachse verschieben. Setzen Sie die Serie wieder auf die Hauptachse.
  6. Entfernen Sie die Markierungen aus der XY-Serie, sodass sie wie eine einfache Linie aussehen.

Dies erfordert keinen zusätzlichen Code und ist sehr sauber. Probe mit XY-Streuung mit einer Linie

Gut gemacht. Bitte zeigen Sie die UDF als Text, der in der Zukunft helfen wird. Viele werden kein .xlsm aus einem offenen Forum herunterladen. Scott Craner vor 5 Jahren 0
0
Scott Craner

Setzen Sie 2.23in der oberen Zelle.

In der nächsten unten setzen =B2.

Angenommen, das 2.23wurde in B2 und die Formel in B3 eingefügt, dann einfach abschreiben.

Wenn Sie dann die Nummer ändern möchten, müssen Sie nur B2 ändern. Der Rest ändert sich

Den Rest der Werte aus der ersten Zelle zu ziehen, ist definitiv eine gute Idee, erfordert aber dennoch eine Reihe von Daten. Ich bin nicht sicher, ob Excel das unterstützen kann, was ich möchte, also werde ich wahrscheinlich mit Ihrer Lösung gehen. J Woltman vor 5 Jahren 0
0
Rajesh S

Ich möchte ein Makro (VBA) vorschlagen, das jeden Wert entweder Number, Text oder sogar Date bis N-mal wiederholt.

enter image description here

Sub RepeatData()  Dim Rng As Range Dim InputRng As Range, OutRng As Range  xTitleId = "Repeat Data"  Set InputRng = Application.Selection Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8) Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8) Set OutRng = OutRng.Range("A1")  For Each Rng In InputRng.Rows xValue = Rng.Range("A1").Value xNum = Rng.Range("B1").Value OutRng.Resize(xNum, 1).Value = xValue Set OutRng = OutRng.Offset(xNum, 0) Next  End Sub 

Wie es funktioniert:

  • Legen Sie dieses Makro als Modul mit dem zugehörigen Datenblatt ein.
  • Starten Sie das Makro und antworten Sie auf das erste Eingabefeld, indem Sie A3: B3 auswählen.
  • Beantworten Sie das zweite Eingabefeld, indem Sie eine einzelne Zelle wie E3 auswählen.
  • Beenden Sie mit Ok.

Sie erhalten das gewünschte Ergebnis, wie in Screenshot gezeigt.

Hinweis: Ich habe absichtlich Situation 2 eingefügt, um zu zeigen, dass das Makro jeden Wert beliebig oft wiederholen kann.