Hallo liebe Community,
ich glaube ich schärfe noch einmal ein bisschen mein Problem:
Die Situation: Durch das untenstehende Makro können wir in unserer Buchhaltungsdatei bereits ein Großteil der Lieferanten den Positionen zuordnen. Es gibt eine selbsterstelle Lieferantenliste, die das Makro zur Zuordnung nutzt. Die Konten, welche keinen Lieferanten darstellen und auch nicht in der Lieferantenliste auftauchen haben den Lieferanten meistens in einer anderen Spaltenbezeichnung (Bestellung) stehen. Und auch das, kann das Makro meistens verarbeiten und die Lieferanten zuordnen. Jedoch ist uns bei genauerem Hinsehen folgendes Problem aufgefallen:
Das Problem:
Hier ein BSP aus der Originaldatei mit dem Lieferanten 1&1, da gerade beim Lieferanten 1&1 vermehrt Fehler auftauchen.
[url=
Arbeitsblatt mit dem Namen 'Tabelle1' |
| C | D | E | F |
4 | Nr. | Lieferant | Bestellung | Ergebnis Makro |
5 | 1 | Betriebs-/Gesch.aus. | Stuhl schwarz, Stoffbezug Andrea, | 1&1 Internet SE |
6 | 2 | Betriebs-/Gesch.aus. | Stuhl schwarz, Stoffbezug Andrea | Achtung |
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016 |
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
][/url][color=#000000][size=x-small][font=Calibri]Arbeitsblatt mit dem Namen 'Tabelle1'
Der Originalbuchungssatz ist die Nr. 1 in der Bestellung fällt auf, das nach dem Namen des Stoffbezugs ein Komma geschrieben ist. Das Ergebnis des Makros zeigt dann aber 1&1 Internet SE
Ich habe zur Überprüfung das Komma nach dem Namen Andrea entfernt und das Makro nochmals darüber laufen lassen. Das Ergebnis in Nr. 2 ist Richtigerweise Achtung, da weder in der Spalte Lieferant noch in der Spalte Bestellung ein Lieferantenname auftaucht, welcher in der meiner Lieferanteliste steht
Ein weiteres Beispiel
[url=
Arbeitsblatt mit dem Namen 'Tabelle1' |
| C | D | E | F |
8 | Nr. | Lieferant | Bestellung | Ergebnis Makro |
9 | 1 | Max Mustermann | Mustermann M., Auslage Wasser, Cola, Essen | Achtung |
10 | 2 | Max Mustermann | Mustermann, Auslage, Getränke, Wasser | Wasserverband e.V. |
11 | 3 | Max Mustermann | Mustermann M., Wasser, Getränke | Wasserverband e.V. |
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016 |
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
][/url][color=#000000][size=x-small][font=Calibri]Arbeitsblatt mit dem Namen 'Tabelle1'
Nr. 1-3 sind alles Originalbuchungssätze (natürlich mit anderem Namen), folgende Beobachtung können festgestellt werden: in Nr. 1 ist in der Bestellung nach dem Wort Auslage kein Komma, sondern nur ein Leerzeichen, das Ergebnis des Makros ist richtigerweise Achtung.
In den Buchungssätzen Nr. 2 und 3 ist jeweils nach dem Wort Getränke bzw. Mustermann M. ein Komma und ein Leerzeichen. Es folgt das Wort Wasser, etc. In beiden fällen ordnet das Makro Wasserverband e.V. als Lieferant zu. Der Wasserverband e.V. ist zwar in der Lieferantenliste geführt, hat jedoch nichts mit dieser Buchung zu tun. Das korrekte Ergebnis wäre hier Achtung.
Ein letztes Beispiel bzw. Problem:
[url=
Arbeitsblatt mit dem Namen 'Tabelle1' |
| C | D | E | F |
13 | Nr. | Lieferant | Bestellung | Ergebnis Makro |
14 | 1 | CPD LUL | Office, 3xMauspads | 1&1 Internet SE |
15 | 2 | CPD LUL | | 1&1 Internet SE |
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016 |
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg |
][/url][color=#000000][size=x-small][font=Calibri]Arbeitsblatt mit dem Namen 'Tabelle1'
Bei den Buchungssätzen handelt es sich wieder um Originaldateien. CpD LuL ist eine interne Kontobezeichnung und kein Lieferant. In Buchungssatz Nr. 1 steht in der Spalte Bestellung ist ein Bestellvorgang beschrieben, das Ergebnis des Makros zeigt aber 1&1 Internet SE. Richtigerweise hätte es „Achtung“ oder, was ich eher verstanden hätte, einen Lieferanten mit Office im Namen zuordnen müssen.
In Buchungssatz Nr. 2 ist in der Bestellungsspalte nichts abgebildet, das Makro wirft aber trotzdem 1&1 Internet SE als Ergebnis aus. Richtigerweise wäre Achtung
Ihr seht also, dass das Makro viel mit dem Komma verbindet und wahrscheinlich Ähnlichkeiten sucht und diese dann zuordnet. Aber gerade bei den Problemen des Lieferanten 1&1 Internet SE verstehe ich die Zuordnung des Makros nicht. Vielleicht habe ihr eine Idee?
Ich habe auch nochmals eine Beispieltabelle inkl. Der obigen Fälle erstellt.
Hier nochmal das Makro
Code:
Sub prüfen()
Dim i As Long, j As Long, n As Long
Dim lngSuche As Long, lngL
Dim vantZ
Dim suchFeld
Dim Lieferanten
Dim strgWarnung As String
Dim arrSuchText
strgWarnung = "ACHTUNG"
'Lieferantentabelle
With Sheets("Lieferantenliste")
lngL = .Cells(.Rows.Count, 3).End(xlUp).Row
Lieferanten = .Range("C2:C" & lngL).Value
End With
'Suchtabelle
With Sheets("Ergebnis")
lngSuche = .Cells(.Rows.Count, 3).End(xlUp).Row
suchFeld = .Range("C4:D" & lngSuche)
For i = 1 To lngSuche - 3
arrSuchText = Split(suchFeld(i, 1) & "," & suchFeld(i, 2), ",")
For n = LBound(arrSuchText) To UBound(arrSuchText)
vantZ = Application.Match("*" & arrSuchText(n) & "*", Lieferanten, 0)
If IsNumeric(vantZ) Then
suchFeld(i, 2) = Lieferanten(vantZ, 1) 'Bei Fund wird die Bezeichnung aus Lieferantenliste zurückgegeben
Exit For
Else
suchFeld(i, 2) = strgWarnung
End If
Next n
Next i
.Range("I4:I" & lngSuche).ClearContents 'Bereich zum schreiben löschen
.Range("I4:I" & lngSuche) = (Application.Index(suchFeld, 0, 2)) 'Ergebnisse schreiben
End With
End Sub
Ich hoffe ihr könnt mir weiterhelfen.
Vielen Dank vorab.
Beste Grüße
ABC_15