AW: Teilenummern erstellen
16.09.2018 17:27:32
fcs
Hallo Cord,
ich hab mich jetzt auch mal mit den Formeln in deiner Datei beschäftigt.
Ich will hier jetzt nicht zu tief in die Probleme mit den Formeln eingehen.
Die unerwünschte "000" ist darauf zurückzuführen, dass das interne Zwischenergebnis 2 und nicht 1 ist und dadurch als Prüfergebnis Falsch (0) ermittelt wird.
Ich hab dann meine eigenen Formeln entwickelt.
A für eine sortierte Liste
Sortierreihenfolge Spalte E (L3), N (SG-ITEM-German), D (L2
nur mit dieser Sortierung arbeiten die Formeln korrekt.
https://www.herber.de/bbs/user/123990.xlsx
B für eine nicht sortierte Liste
hier hab in Spalte AA eine Hilfsspalte (=Text(L3; "000|" & SG-ITEM-German) berechnet.
https://www.herber.de/bbs/user/123991.xlsx
Da du in den Blättern "LISTE2" und "LISTE3" mit Tabellen arbeitest hab ich auch die Formeln für "L3" und "WORKSHOP" entsprechend angepasst.
ET-Number "einfrieren"
Hierzu musst du in den Spalten "L4" und "L5" die Formeln durch Werte ersetzen (via Kopieren und Einfügen (nur Werte))
Umlaute/Leerzeichen in "G-ITEM-German" und "SG-ITEM-German"
Diese werden von den Formeln eigentlich korrekt verarbeitet.
Man muss "nur" dafür sorgen, dass gleiche Artikel mit identischer Schreibweise in der Liste eingetragen sind.
Problemkinder sind hier gerne doppelte Leerzeichen und Leerzeichen am Anfang/Ende von Texten. Diese kann man leicht übersehen oder nicht erkennen.
Mit den beiden nachfolgenden Makros kann man die Leerzeichen bereinigen.
Gruß
Franz
Sub Zelle_Leerzeichen_vorne_hinten_weg()
'Löscht Leerzeichen am Anfang und Ende von Zellinhalten im selektierten Zellbereich
Dim Bereich As Range, arrBereich, Zei As Long, Spa As Long
Dim iCount As Long, StatusCalc As Long
If MsgBox("Im selektierten Zellbereich die Leerzeichen am Anfang und Ende des Zellinhalts lö _
schen?", _
vbQuestion + vbOKCancel, "Zelltext trimmen") = vbCancel Then Exit Sub
With Application
.ScreenUpdating = False
.EnableEvents = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
Set Bereich = Selection
arrBereich = Bereich
For Zei = 1 To Bereich.Rows.Count
For Spa = 1 To Bereich.Columns.Count
arrBereich(Zei, Spa) = Trim(arrBereich(Zei, Spa))
iCount = iCount + 1
Next
Next
Bereich.Value2 = arrBereich
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = StatusCalc
End With
MsgBox iCount & "Zellen bereinigt", vbOKOnly, "Zelltext trimmen"
End Sub
Sub Zelle_Doppelte_Leerzeichen_loeschen()
'Löscht Mehrfach-Leerzeichen im Zellinhalten im selektierten Zellbereich
Dim Bereich As Range
Dim iCount As Long, StatusCalc As Long, I As Integer
If MsgBox("Im selektierten Zellbereich die Doppelte_Leerzeichen im Zellinhalt löschen?", _
vbQuestion + vbOKCancel, "Doppelte_Leerzeichen löschen") = vbCancel Then Exit Sub
With Application
.ScreenUpdating = False
.EnableEvents = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
Set Bereich = Selection
For I = 6 To 2 Step -1
With Bereich.SpecialCells(xlCellTypeConstants)
.Replace What:=VBA.String(I, " "), Replacement:=" ", lookat:=xlPart
End With
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = StatusCalc
End With
MsgBox "Doppelte Leerzeichen gelöscht", vbOKOnly, "Doppelte_Leerzeichen löschen"
End Sub