2017-02-02 4 views
1

Ich bin auf einige Lösungen gestoßen, aber ich habe mich gefragt, ob dies nur die Beschränkung von Excel ist oder es keine Möglichkeit gibt, mehrere Werte aus derselben Zelle zu erstellen. C3 erzeugt den Mittelwert aller Werte in der Nachbarzelle.Excel: Erstellen von Sätzen oder Datenstrings innerhalb einer einzelnen Zelle

Ich werde erklären, warum ich das tun wollte. Ich arbeite an einem Spead Sheet für Preise von Gegenständen in einem Spiel und möchte eine Pseudo-Datenbank aus einer der Zellen der Spalte erstellen. Ein Beispiel dessen, was ich in einer Zelle haben, es zu tun einfach nur dachte:

2, 40, 300, 200, 340

keine Summe Es gibt so etwas wie C2 (Zellenname) alle Einträge von insgesamt geteilt Anzahl der Einträge? Ein Durchschnitt aller Werte getrennt durch Kommas?

Ich weiß, dies ist einfach mit mehreren Zellen, aber ich wollte die horizontale Unordnung zu reduzieren, so fragte mich, ob es irgendeine Möglichkeit gibt, die Werte mit der Syntax zu trennen, ohne Verwendung von VBA oder überkomplizierten Codes.

+0

So haben Sie Zelle 'C2', die die Werte' 2, 40, 300, 200, 340' enthält, und Sie möchten den Durchschnitt dieser Zahlen erhalten? Wenn Sie diese in separaten Zellen haben, warum verwenden Sie nicht einfach '= Concatenate()' mit einem Begrenzer oder 'TextJoin()', wenn Sie die neueste Version haben, und speichern Sie diese in ihrer eigenen Zelle. Daher haben Sie den Bereich der Zellen, mit denen Sie leicht Funktionen ausführen können, und eine abschließende "Helferzelle", die die Zahlen alle zusammen speichert? – BruceWayne

+1

Sie versuchen einfach, Excel in einer Weise zu verwenden, in der Excel nicht verwendet werden sollte. Es macht keinen Sinn, angesichts der Funktionsweise von Formeln in Excel zu versuchen, Daten in einer Spalte zu speichern, wie Sie es vorschlagen, und versuchen, daraus Berechnungen durchzuführen. Wenn VBA eine Option wäre, wäre dies ziemlich einfach. – Kyle

+1

ohne VBA können Sie die Nummer mit "+" 2 + 40 + 300 usw. speichern und dann die Zelle mit dieser Methode http://www.myonlinetraininghub.com/excel-factor-12-secret-evaluate-function dann EVALUIEREN dividiere das Ergebnis durch (LEN (A2) -LEN (SUBSTITUTE (A2, "+", "")) + 1) Anzahl der + Zeichen plus 1. @Kyle Nicht jeder versucht, Excel so zu benutzen, wie es nie gemeint war verwendet werden;) – Gordon

Antwort

5

der Formel ist ein Bär, aber:

=SUMPRODUCT(--MID(SUBSTITUTE(C2,",",REPT(" ",99)),(ROW(INDIRECT("1:" & LEN(C2)-LEN(SUBSTITUTE(C2,",",""))+1))-1)*99+1,99))/(LEN(C2)-LEN(SUBSTITUTE(C2,",",""))+1) 

enter image description here

Es gibt eine Menge hier passiert, also lassen Sie uns es brechen:

LEN(C2)-LEN(SUBSTITUTE(C2,",",""))+1: Ruft die Anzahl der Elemente getrennt durch , In diesem Fall 5. Es wird in dieser Formel zweimal verwendet. Der zweite ist der Nenner, um den Durchschnitt zu erhalten.

Die zweite wird in der (ROW(INDIRECT("1:" & LEN(C2)-LEN(SUBSTITUTE(C2,",",""))+1))-1) verwendet. Hier ist der Teil, der iteriert. SUMMENPRODUKT Wird eine Iteration verursachen und die Teile summieren.

Die Zeile gibt 1,2,3, ... zurück, was von der Funktion LEN (...) - LEN (...) zurückgegeben wird. Wir subtrahieren eins, um bei 0 zu beginnen.

Jede Iteration wird mit 99 multipliziert und wir fügen eins hinzu, weil MID nicht 0 als Startwert hat.

Die SUBSTITUTE(C2,",",REPT(" ",99)) erstellt eine Zeichenfolge, die 99 Leerzeichen anstelle von "," hat.

Der MID nimmt diesen Zahlenstring, der jetzt durch 100 Leerzeichen getrennt ist, und analysiert ihn. Das zweite Kriterium ist die Iteration von 1.100.199.298, ... und so weiter die Anzahl der Zahlen in den Zellenzeiten. Das wird immer auf einen Raum fallen, da wir ihm 100 Felder geben, in denen man landen kann.

Das dritte Kriterium legt die Länge der Zeichenfolge fest, die bei jeder Iteration zurückgegeben wird. Wir benutzen 99, weil es immer wieder ein Leerzeichen nach der Zahl trifft.

Die -- vor der MID wird dazu führen, dass die zurückgegebene analysierte Zeichenfolge auf eine Zahl zurückgesetzt wird. Dies zwingt Excel, die zusätzlichen Leerzeichen zu löschen und nur die Nummer anzuzeigen.

Es ist diese Nummer, die SUMPRODUCT() verwaltet und zu jeder Iteration addiert.

+3

Ein schöner Bär. –

+0

Absolut zustimmen. –

+0

Sie, Herr, sind ein wahrer Meister. Beeindruckend, um es gelinde auszudrücken. – Kyle

0

Sie können auch eine VBA-Funktion für Ihre Frage schreiben:

Beispiel:

enter image description here

-Code eingefügt werden, bevor die Funktion verwendet werden kann:

Public Function AverageCell(allItems As String) As Variant 

Dim itemArray() As String 
Dim totalsum As Variant 
Dim totalav As Long 

totalsum = 0 
totalav = 0 

itemArray() = Split(allItems, ",") 

    For Each num In itemArray() 
     totalsum = totalsum + num 
     totalav = totalav + 1 
    Next num 

AverageCell = totalsum/totalav 

End Function 
Verwandte Themen