1.7k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich habe da ein Problem, wo ich mit sicher bin, daß Ihr mir weiterhelfen könnt.

Ich habe eine Tabelle, wo Artikel in Lagerorten stehen.
in Spalte A sind die Artikelnamen in Spalte B sind die Lagerorte.

Beispiel: ArtikelX Lagerort 225,226
ArtikelY Lagerort 312-314
ArtikelZ Lagerort 45,46

Nun habe ich ein Lagerortplan von 1 - 566. Um rauszufinden, welche Lagerort frei sind, bräuchte ich eine Formel, die aus den Werten in Tabelle 1 die Spuren in Tabelle 2 als belegt anzeigt.

Vielen dank im voraus.


Gruß

manzur

5 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo manzur,

das wird Dir mit dieser Tabellenstruktur nicht gelingen, da diese nicht datenbankgerecht ist.

D.h. die Lagerorte dürfen nicht durch Komma getrennt oder als von-bis-Angabe in einer Zelle stehen, sondern gehören in getrennte Spalten der jeweils gleichen Zeile.

Gruß
Rainer
0 Punkte
Beantwortet von
Hallo Rainer,

leider sind die Lagerorte in dieser Form. Vielleicht kann man mit Hulfsspalten arbeiten, welches die Zahlen auseinandernimmt.

Danke nochmals.


Gruß


manzur1
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hakko manzur,

Die Lagerorte, welche durch Komma getrennt sind, in Hilfsspalten zu bringen, wäre zu machen aber die von-bis Angaben nur mit Akrobatik.

Ich frage mich, warum Du so einen Aufwand treiben willst, nur weil ein Datenerfasser zu faul ist, sich an die Normalitäten zu halten.

Tut mit leid, aber sowas werde ich nicht unterstützen.

Gruß
Rainer
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Manzur1,

ich bin der Meinung, dass der Mensch sich nicht dem Computer anpassen soll, sondern umgekehrt, der Computer dem Menschen. Aus diesem Grund unterstütze ich das!
Ich gehe bei meinem Lösungsansatz davon aus, dass in Spalte A der Artikelname steht und in Spalte B die Lagerorte. Mit der folgenden Prozedur schreibe ich den Artikel in Spalte C und den einzelnen Artikelort in Spalte D. Die Prozedure erlaubt folgende Lagerortsyntax:
44,55,66
1-5,7-9
20-25
11
usw. Hier der Code.

Public Sub getLagerorte()
Dim a As Variant
Dim b As Variant

For i = 1 To 1000
Debug.Print Me.Cells(i, 2)
a = Split(Me.Cells(i, 2), ",")
For j = LBound(a) To UBound(a)
b = Split(a(j), "-")
If UBound(b) - LBound(b) = 1 Then
For k = b(0) To b(1)
Me.Cells(k, 4) = k
Me.Cells(k, 3) = Me.Cells(i, 1)
Next
Else
Me.Cells(a(j), 4) = a(j)
Me.Cells(a(j), 3) = Me.Cells(i, 1)
End If
Next
Next
End Sub
Wie gesagt, das ist nur ein Ansatz. Damit kannst du aber bestimmt weiter kommen. Du musst den Code in das Codemodul der Tabelle mit den Daten kopieren. Mit F5 kannst du die Prozedur ausführen (Cursor muss in der Prozedur stehen) oder mit F8 im Einzelschrittmodus ausführen. Dabei kannst du dir die Werte der Variablen ansehen (Cursor einfach über die Variable bewegen) und den Algorithmus analysieren. Viel Spass damit.

Gruß
Ralf

Gruß
Ralf
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ralf,

ich bin der Meinung, dass der Mensch sich nicht dem Computer anpassen soll, sondern umgekehrt, der Computer dem Menschen. Aus diesem Grund unterstütze ich das!


.....selbstverständlich akzeptiere ich auch Deine Meinung.

Trotzdem vertrete ich den Standpunkt, dass eine Datenerfassung nur dann optimal ist, wenn Auswertungen mit normalen Excel-Bordmitteln (Tabellenfunktionen, Filter, Pivot) möglich sind.

VBA zähle ich zu einer Erweiterung des Genannten.

Gruß
Rainer
...