Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1328to1332
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

Problem Exelfunktion

Problem Exelfunktion
04.09.2013 10:27:41
Kai
Hallo Leute,
tüftel schon seit Tagen an einem Problem. Habe auch bereits eine Lösung, jedoch befürchte ich, dass das Ganze viel einfacher funktioniert.
Problem: Es sollen Zahlenreihen, die wie folgt aussehen 1/3/2x4/9/11/ gezählt und in eine entsprechende Tabelle überführt werden.
Die Tabelle soll folgerichtig 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 in der Kopfzeile enthalten. Nun soll Exel erkennen, dass einmal die eins, 0 mal die 2, einmal die 3, zweimal die 4, keinmal die 5 usw. vorhanden ist und in den Zeilen darunter jeweils eine 1 oder die entsprechende Zahl bspw 2 für 2x4 einsetzen.
Hat jemand eine Idee mit welchem Befehl man das lösen kann?
Gehe zur Zeit hin und prüfe ISTWAHR ob bsp 1/ enthalten ist. Dann WENN/ DANN Bedingung. Das Ganze ist aber problematisch bei Zahlen wie 11/ 14/ etc, denn da erkennt er eben auch 1/ und 4/ etc.
Hoffe jemand hier hat noch eine andere Idee.
Lieben Gruß
Kai

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem Exelfunktion
04.09.2013 12:50:33
ChrisL
Hi Kai
Alt+F11, Einfügen, Modul, Code einfügen
Function KaiFunktion(str As String, bWert1 As Byte) As Integer
Dim ar As Variant, i As Integer, bWert2 As Byte, iAnzahl As Integer
Application.Volatile
ar = Split(str, "/")
For i = 0 To UBound(ar) - 1
If InStr(ar(i), "x") > 0 Then
bWert2 = Val(Split(ar(i), "x")(1))
iAnzahl = Val(Split(ar(i), "x")(0))
Else
bWert2 = ar(i)
iAnzahl = 1
End If
If bWert1 = bWert2 Then
KaiFunktion = iAnzahl
Exit Function
End If
Next i
KaiFunktion = 0
End Function

B1:U1 = Titel 1-20
A2 = Zahlenreihe
B2 = =kaifunktion($A2;B1)
C2 = =kaifunktion($A2;C1)
usw.
cu
Chris

Anzeige
AW: Problem Exelfunktion
04.09.2013 15:39:19
ChrisL
Hi Kai
Function KaiFunktion(str As String, bWert1 As Currency) As Integer
Dim ar As Variant, i As Integer, bWert2 As Currency, iAnzahl As Integer
Application.Volatile
ar = Split(str, "/")
For i = 0 To UBound(ar) - 1
If InStr(ar(i), "x") > 0 Then
bWert2 = Val(Split(ar(i), "x")(1))
iAnzahl = Val(Split(ar(i), "x")(0))
Else
bWert2 = ar(i)
iAnzahl = 1
End If
If bWert1 = bWert2 Then
KaiFunktion = iAnzahl
Exit Function
End If
Next i
KaiFunktion = 0
End Function

cu
Chris

AW: Problem Exelfunktion - Formellösung
04.09.2013 13:33:39
fcs
Hallo Kai,
wenn du ohne die von Chris vorgeschlagen benutzerdefinierte Funktion arbeiten willst, dann benötigt man bei max. 20 Zahlen, die ausgewertet werden sollen ca. 80 Hilfsspalten für Zwischenergebnisse.
1. Position der "/" im Text
2. Text zwischen den "/"
3. Zahl zwischen "/"
4. Anzahl Zahl
Beispieldatei:
https://www.herber.de/bbs/user/87147.xlsx
Gruß
Franz

Anzeige
AW: Problem Exelfunktion
04.09.2013 15:20:29
Kai
Hallo Chris, hallo Franz,
erstmal vielen Dank für die 2 Lösungsansätze. Die Variante von Chris verstehe ich zwar nicht, da ich bei VBA nicht mitkomme.
Funktioniert allerdings einwandfrei :-)
Habe lediglich noch ein Problem welches ich bei der Problembeschreibung in der Form vergessen habe.
Bei der 7 können auch nicht Integerzahlen auftreten. Folglich rundet er zur Zeit alles, was 0,5 ist auf.
Das ist etwas unglücklich, da somit das Ergebnis der Auswertung verfälscht wird.
Danke schonmal für Eure schnelle Hilfe.
Gruß
Kai

AW: Problem Exelfunktion
04.09.2013 15:57:32
fcs
Hallo Kai,
durch Verwendung von Datentyp Double statt Integer für veschiedene Variablen in Chris' Makro werden auch Dezimalwerte korrekt ermittelt.
Gruß
Franz
Function KaiFunktion(str As String, bWert1 As Currency) As Double
Dim ar As Variant, i As Integer, bWert2 As Currency, dblAnzahl As Double
Application.Volatile
ar = Split(str, "/")
For i = 0 To UBound(ar) - 1
dblAnzahl = 0
If InStr(ar(i), "x") > 0 Then
bWert2 = Val(Split(ar(i), "x")(1))
dblAnzahl = CDbl(Split(ar(i), "x")(0))
Else
bWert2 = ar(i)
dblAnzahl = 1
End If
If bWert1 = bWert2 Then
KaiFunktion = dblAnzahl
Exit Function
End If
Next i
KaiFunktion = 0
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige