Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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

Summe Zählenwenn: welcher Fehler?

Summe Zählenwenn: welcher Fehler?
03.11.2022 12:24:52
erichm
Hallo,
ich habe 2 Tabellen:
Tabelle KK3: dort sind ab B5 nach unten Bezeichnungen aufgelistet, die immer verschiedene Namen mit 01A, 02R, 03A, 10R usw. haben
Tabelle KK3quer: dort sind ab B5 nach unten Bezeichnungen aufgelistet, die immer verschiedene Namen mit 01A, 02R, 03A, 10R usw. haben, jedoch sind die Bezeichnungen immer länger als in Tabelle KK3
Aufgabe: es soll pro Zeile ab Zeile 5 in der Tabelle KK3quer herausgefunden werden, welche bzw. wieviele Nachmensteile 01A, 02A usw. jeweils mit den Zeilen in KK3 übereinstimmen. Ich habe zuerst in beiden Tabellen die Namensteile 01A, 02A usw. in Spalten aufgeteilt. Anschließend habe ich per MTRANS die Spalte A und die Spalte B in KK3quer in die Zellen ab AN1 quer aufgelistet.
Jetzt kann quasi jede Zeile von KK3quer mit jeder Zeile KK3 verglichen werden. Ich habe hierfür folgende Formel erstellt in AN5 und nach rechts und nach unten kopiert:
~=WENN(SUMME(WENN('KK3'!$U5:$AX5999;ZÄHLENWENN('KK3'!$U5:$AX5;INDEX($F:$AI;AN$1;hoch!AN$13):INDEX($F:$AI;AN$1;hoch!BR$13))))='KK3'!$F5;"JA";"")~
Die Formel liefert falsche und richtige Ergebnisse. Ich habe schon alles mögliche probiert, geändert, aber ohne Erfolg. Ich dachte, es liegt evtl. an dem Spaltenbereich, den ich mit der INDEX-Formel fixiere. Dafür habe ich in der Hilfstabelle "hoch" in den Zeilen 11 bis 13 verschiedene Spaltendifferenzen angelegt - aber alles ohne Erfolg.
In einer Tabelle KK3quer_manuell habe ich die Zellen AQ8, AY16 und BA 18 rot markiert, da diese jeweils falsch sind (es sind aber sicherlich noch mahr falsch). Aber für die Erklärung könnten die Hinweise reichen.
https://www.herber.de/bbs/user/155987.xlsx
Vielen Dank für eine Hilfe.
mfg

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summe Zählenwenn: welcher Fehler?
03.11.2022 13:59:21
Yal
Hallo Erich,
das Vorhaben ist nicht komplex, aber mit Excel lösen zu versuchen macht es komplex.
Daher würde ich auf eine User Defined Function (UDF) weichen:
die 2 Dateiname als Eingangsparameter,
behalten, was zwischen Unterstrich und Leezeichen liegt,
daraus in 3er-Gruppe einzel vergleichen.
Sieht so aus:

Public Function Ähnlichkeit(ByVal Name1 As String, ByVal Name2 As String) As String
Dim i, j
Dim Res As String
Name1 = Left(Name1, InStr(1, Name1, " ") - 1) 'nur was vor dem Leerzeichen steht
Name1 = Mid(Name1, InStr(1, Name1, "_") + 1) 'nur was nach dem Underscore steht
Name2 = Left(Name2, InStr(1, Name2, " ") - 1) 'nur was vor dem Leerzeichen steht
Name2 = Mid(Name2, InStr(1, Name2, "_") + 1) 'nur was nach dem Underscore steht
For i = 1 To Len(Name1) Step 3
For j = 1 To Len(Name2) Step 3
If Mid(Name1, i, 3) = Mid(Name2, j, 3) Then Res = Res & Mid(Name1, i, 3)
Next
Next
Ähnlichkeit = Res
End Function
Sub test()
Dim erg
erg = Ähnlichkeit("KK10_01A02A03R08A10A13A18A20R22A36R 26636.csv", "KK10_01A02A03R14R15R20A27R36A37A40R 41119.csv")
MsgBox erg, Len(erg) / 3
End Sub
So wie "Ähnlichkeit" (Falls Überschneidung mit einer Excel-Formel, Name ändern) da steht, kann man es als UDF verwenden, also als ganz normale Excel-Formel.
Um als UDF verwendet werden zu können, muss der Code in einem Modul abgelegt werden (in-VB-Editor, "Einfügen", "Modul")
Wenn Du nur die Anzahl der Übereinstimmung relevant ist, dann "Res" und "Ähnlichkeit" As Integer definieren und Then Res = Res + 1
VG
Yal
Anzeige
Starke Lösung!!
03.11.2022 16:31:10
erichm
Hallo Yal,
danke für die schnelle und sehr gute Lösung. Ich habe jetzt ab AN5 die Formel: ~=WENN(Ähnlichkeit('KK3'!$B5;AN$2)=$E5;"JA";"")~ und habe als Ergebnis wieder meine "JA"-Übersicht.
Funktioniert einwandfrei.
Trotzdem eine Frage: Den Hinweis / die Empfehlung
Wenn Du nur die Anzahl der Übereinstimmung relevant ist, dann "Res" und "Ähnlichkeit" As Integer definieren und Then Res = Res + 1
habe ich weder verstanden noch ist mir die Umsetzung nicht klar.
Danke nochmal
mfg
doch noch ein Problem
03.11.2022 16:56:44
erichm
Ich habe die Formel bisher in meiner Musterdatei (UDF in ein Modul kopiert) ausprobiert - ohne Probleme (auf Laptop mit Windows 11).
In meiner Originaldatei (UDF in ein Modul kopiert) erhalte ich leider immer die Fehlermeldung #WERT
Die Datei ist vom Aufbau völlig identisch, gleiches EXCEL wie auf Laptop; lediglich auf WIN10 statt WIN11.
Muss ich in EXCEL evtl. noch was einstellen, damit's funktioniert? Kenne mich mit UDF's nicht aus. Habe EXCEL auch schon mehrmals heruntergefahren und neu geöffnet.
DANKE!
mfg
Anzeige
AW: doch noch ein Problem
03.11.2022 17:25:30
erichm
vorgeschildertes Problem schon erledigt - warum weiß ich nicht ?
bleibt also nur noch meine Frage:
Trotzdem eine Frage: Den Hinweis / die Empfehlung
Wenn Du nur die Anzahl der Übereinstimmung relevant ist, dann "Res" und "Ähnlichkeit" As Integer definieren und Then Res = Res + 1
habe ich weder verstanden noch ist mir die Umsetzung nicht klar.
Danke!
AW: doch noch ein Problem
03.11.2022 17:28:48
Yal
Hallo Erich,

   Public Function Ähnlichkeit(ByVal Name1 As String, ByVal Name2 As String) As Integer
Dim i, j
Dim Res As Integer
Name1 = Left(Name1, InStr(1, Name1, " ") - 1) 'nur was vor dem Leerzeichen steht
Name1 = Mid(Name1, InStr(1, Name1, "_") + 1) 'nur was nach dem Underscore steht
Name2 = Left(Name2, InStr(1, Name2, " ") - 1) 'nur was vor dem Leerzeichen steht
Name2 = Mid(Name2, InStr(1, Name2, "_") + 1) 'nur was nach dem Underscore steht
For i = 1 To Len(Name1) Step 3
For j = 1 To Len(Name2) Step 3
If Mid(Name1, i, 3) = Mid(Name2, j, 3) Then Res = Res + 1
Next
Next
Ähnlichkeit = Res
End Function
Voilà.
VG
Yal
Anzeige
SUPER!
03.11.2022 20:37:01
erichm
Hallo Yal,
vielen Dank für den Service!
Wieder was dazugelernt, das ich hoffentlich nicht so schnell vergesse.
mfg

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige