Anzeige
Archiv - Navigation
1892to1896
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

PLZ mit Case zuordnen

PLZ mit Case zuordnen
10.08.2022 11:40:50
Eisi
Hallo zusammen,
nachfolgender Code in ähnlicher Form hatte bis jetzt immer super funktioniert.
Jetzt macht der Code etwas, was nicht sein kann?
1.) Wenn er die PLZ findet, dann weise in der Spalte die Zahl 2 zu.
2.) Wenn der Code nichts findet, dann sollte wohl die Zielzelle leer sein, oder? Aber der Code schreibt da die Zahl 1 rein?
3.) Die PLZ die mit zum Beispiel mit 4 beginnt wird im Code die Zahl 2 zugewiesen. Kann ja nicht sein, weil im Code keine PLZ mit 4 gesucht wird.
Also müsste die Zelle leer bleiben, weil er nichts findet.
4.) Es gibt sogar PLZ die der Code mit leer zuordnet. Betrifft PLZ 26121 bis 26135. Warum passiert das so?
Warum verhält der Code sich überhaupt so seltsam?
Danke für die Hilfe.
Schöne Grüße
Eisi :-)

Private Sub CommandButton5_Click()
Dim TB, Sp As Integer, ZSp As Integer, LR As Double, i As Double
Sp = 1                                        'PLZ in Spalte A
ZSp = 5                                       'Zielspalte E
Set TB = Sheets("Gebiete_neu")
LR = TB.Cells(TB.Rows.Count, Sp).End(xlUp).Row
For i = 2 To LR
' Suche PLZ 0, 6, 7, 8, 9
Select Case Int(Left(TB.Cells(i, Sp), 1)) ' 1 ziffrig prüfen
Case 0, 6 To 9
TB.Cells(i, ZSp) = 2              ' = Gebiet 2
End Select
' Suche PLZ 52, 53, 54, 55, 56
Select Case Int(Left(TB.Cells(i, Sp), 2)) ' 2 ziffrig prüfen
Case 52, 53, 54, 55, 56
TB.Cells(i, ZSp) = 2              ' = Gebiet 2
End Select
Next
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PLZ mit Case zuordnen
10.08.2022 12:09:22
GerdL
Hallo Eisi!
5.) Lade bitte eine Datei hoch mit deinen Daten in der Tabelle u. deinem Code.
Das könnte zielführend sein.
Gruß Gerd
AW: PLZ mit Case zuordnen
10.08.2022 12:15:58
Rudi

Aber der Code schreibt da die Zahl 1 rein?
der schreibt keine 1. Die muss woanders her kommen oder schon drin sein.
Beispielmappe?
Gruß
Rudi
AW: PLZ mit Case zuordnen
10.08.2022 12:22:36
Daniel
Hi
wenn der Code keine Zuordnung findet, dann macht er mit der Zelle nichts.
sollte da schon was drin stehen, dann bleibt das drin.
ggf musst du die Zellen der Spalte E zuerst leeren.
oder du kannst eine Formel eintragen.
in dem Fall könnte der SVerweis helfen, der braucht auch nicht zwingend eine Tabelle, die kann man in der Formel mit angeben:

With Range("E2:E" & LR)
.FormulaLocal = "=WennFehler(SVerweis(A2*1;{0.2;1000."""";52000.2;57000."""";60000.2};2;0);"""")"
.Formula = .Value
end with
Gruß Daniel
Anzeige
AW: PLZ mit Case zuordnen
10.08.2022 12:30:45
Daniel
Hi
du könntest auch so prüfen:
mit dem Format sicherst du ab, dass auch PLZ mit 0 am Anfang diese tatsächlich haben, auch wenn die PLZ als Zahl in der Zelle steht und nicht als Text, ansonsten fällt die führende Null am Anfang weg und ein 04321 bekommt keine 2, weil dann das erste Zeichen von links die 4 ist.

dim PLZ2 as string
for i = 2 to LR
PLZ2 = Left(Format(TB.Cells(i, sp).value, "00000"), 2)
if PLZ2 like "[06789]#" or PLZ2 like "5[23456]" then
TB.Cells(i, sp2) = 2
else
TB.Cells(i, sp2) = ""
end if
next
Gruß Daniel
sind deine PLZ Text?
10.08.2022 12:32:44
Rudi
denn sonst tritt der Fall 0 nie ein.
Anzeige
gelöst ;-) AW: PLZ mit Case zuordnen
10.08.2022 12:59:31
Eisi
Hallo zusammen,
ich habe mich von den alten Einträgen blenden lassen. Ich habe jetzt den Inhalt der kompletten Spalte gelöscht und dann den Code neu ausgeführt.
Jetzt passt alles, sorry.
Die PLZ sind als Text hinterlegt.
Aber das bringt mich zur Notwendigkeit generell die Spalte zu leeren bevor ich den Code ausführe.
Ist mir nur noch nicht aufgefallen, weil die anderen Codes alle PLZ durchsuchen und nicht nur einen Teil.
In diesem Fall aber gibt es nur eine Teilzuordnung der Gebiete und der Rest ist dann ADM xyz.
Die Leerzellen weise ich dann mit XVERWEIS in einer neuen Spalte dem ADM zu und habe die richtige Gebietsaufteilung.
Herzlichen Dank.
GLG Eisi
Anzeige
gelöst ;-) AW: PLZ mit Case zuordnen
10.08.2022 16:37:14
Luschi
Hallo Eisi,
das kann ich gar nicht alles glauben, was Du da schreibst, der von dir gezeigte Code macht eben nicht, was er soll:
- die PLZ 26121 bis 26135 werden nicht behandelt und übersprungen
- der Code jedenfalls macht da nix leer
- TB ist ein Tabellenblatt, dann definiere es auch so: Dim TB As Worksheet
- die Property 'Row' ist laut Vba-Online-Hilfe vom Typ Long
- warum ist dann die Variable 'LR', die ja 'Row' speichert vom Typ Double?
- genauso die Zähl-Laufvariable 'i'
- Objekte, die man selbst erzeugt, sollte man auch wieder selbst zerstören
  Set TB = Nothing
- bei Zell-Wertzuweisungen sollte man schon die entsprechende Property mit hinschreiben
  TB.Cells(i, ZSp).Value = 2 statt nur TB.Cells(i, ZSp) = 2
- wegen solcher Ungenauigkeiten ist der 1. Testflug von Ariane 5 voll in die Hose gegangen
  es stellte sich heraus, man hat neue Hardware eingebaut, den Wertebereich
  der Speichervariablen aber vergessen anzupassen; siehe: dieses Video
Gruß von Luschi
aus klein-Paris
Anzeige
gelöst ;-) AW: PLZ mit Case zuordnen
11.08.2022 08:54:28
Eisi
Servus Luschi,
herzlichen Dank für die Aufklärung, sehr wertvoll.
Vielen Dank
Schöne Grüße Eisi :-)
AW: PLZ mit Case zuordnen
10.08.2022 15:34:03
snb
oder:

Sub M_snb()
sn = Cells(1).CurrentRegion.Resize(, 2)
For j = 2 To UBound(sn)
sn(j, 2) = 2 * Abs((Left(sn(j, 1), 1) Like "[06789]") + (Left(sn(j, 1), 2) Like "5[2-6]"))
Next
Cells(1, 4).Resize(UBound(sn), 2) = sn
End Sub

AW: PLZ mit Case zuordnen
10.08.2022 16:17:12
Eisi
Herzlichen Dank für die tollen Tipps :-)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige