2017-07-12 1 views
0

Ich kann nicht herausfinden, warum diese UDF nicht konsistent Zahlen hinzufügt. Ich habe den Ausgang zu Illustrationszwecken farbig codiert. Es fügt alles genau hinzu, aber aus irgendeinem Grund möchte es nicht die 4 Zahlen hinzufügen, die gleich 64 sein sollten, aber stattdessen gibt es 46.5 aus, aber es gibt keine Kombination von irgendwelchen Zahlen, die zu 46.5 herauskommen.Warum fügt dieses UDF Nummern nicht korrekt hinzu?

enter image description here

Dies ist die UDF Ich verwende.

Function TEXTJOINSUM(delim As String, skipblank As Boolean, arr) 
Dim d As Long 
Dim c As Long 
Dim arr2() 
Dim t As Long, y As Long 
t = -1 
y = -1 
If TypeName(arr) = "Range" Then 
    arr2 = arr.Value 
Else 
    arr2 = arr 
End If 
On Error Resume Next 
t = UBound(arr2, 2) 
y = UBound(arr2, 1) 
On Error GoTo 0 

If t >= 0 And y >= 0 Then 
    For c = LBound(arr2, 1) To UBound(arr2, 1) 
     For d = LBound(arr2, 1) To UBound(arr2, 2) 
      If arr2(c, d) <> "" Or Not skipblank Then 
       TEXTJOINSUM = TEXTJOINSUM & arr2(c, d) & delim 
      End If 
     Next d 
    Next c 
Else 
    For c = LBound(arr2) To UBound(arr2) 
     If arr2(c) <> "" Or Not skipblank Then 
      TEXTJOINSUM = TEXTJOINSUM & arr2(c) & delim 
     End If 
    Next c 
End If 
    TEXTJOINSUM = Left(TEXTJOINSUM, Len(TEXTJOINSUM) - Len(delim)) 
    'add the below loop to add each number together 
    Dim total As Double 
    Dim txtPart 
    For Each txtPart In Split(TEXTJOINSUM, delim) 
     total = total + CDbl(txtPart) 

    Next txtPart 
    TEXTJOINSUM = total 
End Function 
+0

Spalten C und G auf "Nummer" gesetzt, wenn das einen Unterschied macht. – Devil07

+2

Sehen Sie sich Ihre Daten an. Entweder ist das Datum in A14 kein echtes Datum oder es ist Zeit damit verbunden, oder B14 hat Leerzeichen oder andere nicht sichtbare Zeichen. Der Code funktioniert für mich, aber es ist eine Menge Arbeit für etwas, was Excel mit nativen Formeln tun wird. Der Fehler liegt in den Daten entweder A14 oder B14. Retype diese zwei Zellen und ich wette, es wird funktionieren. –

+1

"Es gibt keine Kombination irgendwelcher Zahlen, die auf 46,5 kommen" - wie wäre es mit C11 + C12 + C13? – YowE3K

Antwort

2

Keine Notwendigkeit für die komplizierte UDF verwenden SUMIFS():

=SUMIFS(C:C,A:A,E2,B:B,F2) 

enter image description here

+0

Ich erkannte nicht, dass meine Version von Excel diese SUMME hatte, während es meine Frage über den Fehler mit der UDF genau beantwortet, Sie beantworteten es im Kommentarabschnitt zu meiner Frage. Du solltest 2X Punkte bekommen. Dies ist ein viel besserer Weg, um das zu erreichen, was ich tat. Der Grund, warum ich die UDF benutzte, war, dass ich sie bereits für textJoin verwendete (da meine Version von Excel) nicht die textJoin Funktionalität hatte das Ende. – Devil07

+0

Für diese Ausgabe würde ich nicht die UDF verwenden, und deshalb stelle ich die "Antwort" in den Kommentaren und die beste Methode hier. Ich wollte Ihnen die Antwort geben, aber wenn andere Benutzer dies finden, möchte ich, dass sie die Formel verwenden. Ich wünschte, ich wäre in deinem früheren Beitrag diesbezüglich gewesen, ich hätte dich schon vor Tagen zu dieser Methode gelenkt. –

+0

Es hätte mir mehrere Stunden Kopfschmerzen erspart, aber ich habe ein paar gute Erfahrungen daraus gemacht. Dies ist eine viel elegantere Lösung. – Devil07

Verwandte Themen