Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Typen unverträglich und ich verzweifel

Typen unverträglich und ich verzweifel
02.08.2013 11:14:53
ChrisD
Hallo Zusammen.
Ich versuche verzweifelt in VBA mit der Sumproduct Funktion mit mehreren variablen Abfragen ein
Ergebnis zu produzieren. Wenn ich nur zwei Abfragen habe, funktioniert es. Baue ich eine _ weitere ein, geht es nicht mehr. Hier mal die beiden Codes im Vergleich :

Private Sub auswertung()
Dim AM1 As String, AM2 As String, G1 As String, G2 As String
'Variable für Comboboxauswahl, Anzahl der Zeilen und der Abfragekriterien
Dim strCo As Variant
Dim lngLZ As Long
Dim para(4) As Variant
'Befüllung der Variablen für die Altersstruktur
With Sheets("RohdatenA")
lngLZ = .UsedRange.Row + .UsedRange.Rows.Count - 1
strCo = Sheets("Ergebnis").ComboBox1
G1 = "männlich"
G2 = "weiblich"
para(0) = .Range("A2:A" & lngLZ).Address(, , , True)
para(1) = .Range("B2:B" & lngLZ).Address(, , , True)
para(2) = .Range("C2:C" & lngLZ).Address(, , , True)
para(3) = .Range("D2:D" & lngLZ).Address(, , , True)
AM2 = Evaluate("SumProduct((" & para(0) & " = """ & strCo & """) * (" & para(2) & " > ""25"" _
_
_
_
_
_
_
_
) * (" & para(3) & " = """ & G1 & """) * (" & para(1) & "))")
MsgBox (AM2)
End With
End Sub

und mit einer Abfrage weniger geht es und ich bekomme nicht mehr den Fehler : Typen unverträ _ glich angezeigt.

Private Sub auswertung()
Dim AM1 As String, AM2 As String, G1 As String, G2 As String
'Variable für Comboboxauswahl, Anzahl der Zeilen und der Abfragekriterien
Dim strCo As Variant
Dim lngLZ As Long
Dim para(4) As Variant
'Befüllung der Variablen für die Altersstruktur
With Sheets("RohdatenA")
lngLZ = .UsedRange.Row + .UsedRange.Rows.Count - 1
strCo = Sheets("Ergebnis").ComboBox1
G1 = "männlich"
G2 = "weiblich"
para(0) = .Range("A2:A" & lngLZ).Address(, , , True)
para(1) = .Range("B2:B" & lngLZ).Address(, , , True)
para(2) = .Range("C2:C" & lngLZ).Address(, , , True)
para(3) = .Range("D2:D" & lngLZ).Address(, , , True)
AM2 = Evaluate("SumProduct((" & para(0) & " = """ & strCo & """) * (" & para(3) & " = """ &  _
_
_
_
_
_
_
_
G1 & """) * (" & para(1) & "))")
MsgBox (AM2)
End With
End Sub

Nun wird die für die richtige Antwort als MsgBox ausgegeben.
In der Tabelle habe ich 4 Spalten :
A = Firmen, B= Anzahl Köpfe (immer1), C=Alter, D=Geschlecht
Kann mir bitte jemand helfen. Ich verweifel nämlich langsam.
Liebe Grüße
Chris

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Typen unverträglich und ich verzweifel
02.08.2013 12:25:37
ChrisD
Hallo nochmal...
Sorry wegen der Formatierung der Code Kopie. Keine Ahnung woher die ganzen Leerzeilen kamen :)
VG
Chris

Viell hilft dir, ...
03.08.2013 12:32:58
Luc:-?
…Chris,
wenn du erst mal das hier liest?!
Gruß Luc :-?

AW: Typen unverträglich und ich verzweifel
03.08.2013 15:36:02
fcs
Hallo Chris,
die Länge der Formeln, die mit Evaluate ausgewertet werden können ist begrenzt auf ca. 255 Zeichen.
Bei längeren Formeln gibt valuate einen Fehler aus.
So wie ich das sehe ändert sich die Länge der zuzusammengefügten Formeln von unter auf über 255 Zeichen, wenn du einen weiteren Parameter anhängst.
Gruß
Franz

Anzeige
AW: Typen unverträglich und ich verzweifel
05.08.2013 12:30:21
ChrisD
Hallo zusammen.
Wie ich gerade merke, bin ich leider noch nicht sehr Forenbewandert. :)
Jetzt ist auch noch mein Posting verschwunden :)
Also nochmal. :)
Vielen Dank an Euch alle erst einmal. Ich war Samstag nicht im Büro, daher kann ich jetzt erst antworten.
1. Ich habe die Zeichen mal nachgezählt und komme auf weitaus weniger als 255.
2. Ich habe sowohl die 25 als Text formatiert, wie aber auch als Zahl probiert. Beides läuft auf den gleichen Fehler.
3. Da ich insgesamt ca 50 Abfragen (wie die AM2) dieser Art habe und dabei sowohl neben dem Geschlecht auch beim Alter kleiner und grösser als auch von bis abfragen muss (zB. 26-30 Jahre) fand ich die SumProduct Funktion am sinnvollsten.
4. Ich möchte gerne in den Tabellen Sheets keine Zahlen oder "Helferlein Tabellen", sondern nur eine durch ein Dropdownmenü initiierte Abfrage (strCo) und ein Tornado Diagramm ausgeben.
Gibt es hier eine Möglichkeit? Bin ich auf dem richtigen Weg oder gibt es vielleicht einen wesentlich besseren ?
Vielen Dank nochmal an Alle....
Chris

Anzeige
AW: Typen unverträglich und ich verzweifel
05.08.2013 15:37:22
fcs
Hallo Chris,
die Länge der Formel berechnet sich nach dem Inhalt der Variablen (insbesondere der Zellbereiche, da hier Dateiname und Tabellenname bei jedem Bereich dabei sind. Da brauch es nicht sehr viele zusätzliche Parameter in der Formel um die 255-Grenze zu knacken.
Du kannst aber auch die Formel in einer Zelle einfügen und jeweils berechnen lassen.
Gruß
Franz
Sub auswertung()
'Private Sub auswertung()
Dim AM1 As String, AM2 As String, G1 As String, G2 As String
'Variable für Comboboxauswahl, Anzahl der Zeilen und der Abfragekriterien
Dim strCo As Variant
Dim lngLZ As Long
Dim para(4) As Variant, strFormel As String
'Befüllung der Variablen für die Altersstruktur
With Sheets("RohdatenA")
lngLZ = .UsedRange.Row + .UsedRange.Rows.Count - 1
strCo = Sheets("Ergebnis").ComboBox1
G1 = "männlich"
G2 = "weiblich"
para(0) = .Range("A2:A" & lngLZ).Address(, , , True)
para(1) = .Range("B2:B" & lngLZ).Address(, , , True)
para(2) = .Range("C2:C" & lngLZ).Address(, , , True)
para(3) = .Range("D2:D" & lngLZ).Address(, , , True)
strFormel = "SumProduct((" & para(0) & " = """ & strCo & """) * (" & para(3) _
& " = """ & G1 & """) * (" & para(1) & "))"
MsgBox "Länge Formel: " & Len(strFormel) & vbLf & _
strFormel                                              'Testzeile
AM2 = Evaluate(strFormel)
'Formel in Blatt Ergebnis in eine Zelle einfügen
With Worksheets("Ergebnis").Range("F5")
.Formula = "=" & strFormel
.Calculate
.Offset(1, 0) = "'" & strFormel
MsgBox "Formel-Ergebnis in Zelle F5: " & .Value & vbLf _
& "Ergebnis valuate: " & AM2
End With
End With
End Sub

Anzeige
AW: Typen unverträglich und ich verzweifel
03.08.2013 13:28:09
Muge
Hallo Chris
Kann es an der zusätzlichen Abfrage ... para(2) selbst liegen? Das da u.U. zufiele Anführungsstriche um die 25 sind? Die 25 also als Text und nicht als Wert interpretiert werden?

AW: Typen unverträglich und ich verzweifel
05.08.2013 12:18:46
ChrisD
Hallo zusammen.
Vielen Dank für die vielen Antworten.
Leider war ich am Samstag nicht im Büro. Daher konnte ich erst heute aggieren.
Ich habe jetzt gerade mal durchgezählt :
AM2 = Evaluate("SumProduct((" & para(0) & " = """ & strCo & """) * (" & para(2) & " > ""25"") * (" & para(3) & " = """ & G1 & """) * (" & para(1) & "))")
Ich komme auf weit weniger als 255 Zeichen. Das kann es nicht sein.
Bei der Zahl 25 habe ich diese sowohl schonmal als Text formiert getestet, wie aber auch als Zahl. Beides hat nicht funktioniert.
Um die Notwendigkeit von "Helferlein Tabellen" in meinen Sheets zu eleminieren habe ich vorgehabt, die Abfrage komplett in VBA vorzunehmen. Die "AM2" ist nur eine von insgesamt knapp 50 Abfragen dieser Art.
Ich habe 25 Altersgruppen, die es abzufragen gilt und eine jeweilige Abfrage getrennt nach Geschlecht.
Die Ergebnisse benötige ich nachher für die Darstellung eines Diagrammes. Somit sollten - wenn möglich - keine Werte in Tabelleblätter geschrieben werden.
Gibt es hier eine Möglichkeit ?
Ganz lieben Dank nochmal...
Chris
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige