PDA

Vollständige Version anzeigen : Werte in ID-Variable umändern


TauLee
01.07.2014, 15:08
Hallo,

Ich bin neu, sowohl hier, als auch an meinem Arbeitsplatz.
Ich habe eine Aufgabe zugewiesen bekommen, wo ich in Excel Tabellen Werte umändern soll in die ID der Werte... Also sagen wir mal :

In der ID-Tabellen Datei steht -> Tomate = ID 1.
Dann soll ich in einer anderen Excel-Tabellen Datei den wert Tomate finden und ihn umändern in 1.

So weit so gut, pipifax, nur ist die Tabelle mit den ID's für die werte ungefähr 13.000 Spalten lang...
Und die Datei mit den Werten, die ich in die ID's umwandeln muss 200.000 Spalten lang...
SVERWEIS und so weiter, komm ich nich mit klar. Ich weis nicht wie ich zum ersten die ID's so zuweise, das er automatisch erkennt Tomate = 1, und nicht dass es einfach nur nebeneinander steht und zum zweiten, wie lasse ich einen "Agenten" über meine andere Tabelle laufen, wo er diese Werte dann alle in ID's umändert???
Habt ihr einen Plan??

Mfg
TauLee


Edit: Ps: 200.000 Spalten, weil die Werte sich wiederholen. Also nicht das sich einer wundert.

EarlFred
01.07.2014, 15:20
Hallo TauLee,

Habt ihr einen Plan??
Nein. Ich verstehe das Problem einfach nicht.
Hast Du ein Problem damit, den Sverweis so zu erstellen, dass Du für die "Tomate" die richtige ID erhältst?
Hast Du ein Problem damit, die Formel zu kopieren, damit Du zu allen anderen "Produkten" die richtige ID erhältst?
Hast Du ein Problem damit, die Formelergebnisse anders (wie?) darzustellen?
Hast Du ein Problem damit, die Formelergebnisse anstelle der "Produkte" einzutragen?

Wie sieht die Mappe nun genau aus? Kannst Du ein Muster (KEINE sensiblen Daten! Und KEINE 200.000 Zeilen!) hier hochladen, damit man den Aufbau und die Aufgabe erkennen kann?

200.000 Spalten...nicht das sich einer wundert.
da wundere ich mich allerdings schon.

Grüße
EarlFred

TauLee
01.07.2014, 21:36
Hallo, Earlfred.

-"Hast Du ein Problem damit, den Sverweis so zu erstellen, dass Du für die
"Tomate" die richtige ID erhältst?"

Also ich hab mich noch nie mit Excel beschäftigt, deswegen versteh ich Sverweis nicht, habs mir aber auch nicht genauer angeschaut.
Wie weise ich etwas eine Formel zu? Ich weis ja noch nichtmal wo die Funktion versteckt ist.
Alles was ich im Internet gefunden hab hatte damit zu tun etwas in die Spalten zu schreiben. Damit überspringe ich wohl alle deine Fragen.
Kannst du mir erklären wie ich das mache :grins:

Und zum hochladen, das sind vertrauliche Daten.. Kundendaten, ich glaube das darf ich nicht, laut meinem Vertrag zumindest :p

Es sieht so aus.
Erstes Tabellendokument :
2 Spalten, ID und Wert.

Zweites Tabellendokument:
Aufträge welchen die selben Werte zugeordnet sind von oben. Diese Werte sollen aber in ihre ID's umgeschrieben werden. Ich könnte das alles mit "alles ersetzen" machen, also für jeden Wert einzeln, aber bei 13.000 spalten :boah:


Sind 200.000 viel oder wenig :D? ich hab keine Ahnung bei Excel :) Ich fasse das nur nebenbei mal an

Mc Santa
01.07.2014, 23:33
Hallo,

Ich habe dir mal eine Beispieldatei erstellt, schau mal ob du es so gemeint hast.

Hier der Code, für alle, die nicht in die Datei wollen :)
Sub ersetzen()

Application.ScreenUpdating = False

Dim wsID As Worksheet, wsSrc As Worksheet, wsTar As Worksheet
Set wsID = Sheets("Zuordnung")
Set wsSrc = Sheets("Aufträge")
Set wsTar = Sheets("Ausgabe")

wsSrc.Range("A:B").Copy wsTar.Cells(1, 1)

Dim rng As Range

With wsID
For Each rng In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
wsTar.Cells.Replace What:=rng.Offset(, 1), Replacement:=rng, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next rng
End With

Application.ScreenUpdating = True

End Sub

Hilft dir das weiter?
VG

TauLee
02.07.2014, 07:45
Hallo Mc Santa,

dein Code sieht ja schonmal ganz gut aus, ich bin gerade am Testen.
2 Problemchen ^^

Die Aufträge wiederholen sich, also Auftragsnummer 1 geht einige Spalten lang, und dazu werden verschiedene Werte zugeordnet. Ich hoffe dein Code hat kein Problem damit :)

Zum anderen habe nach dem einsetzen der zigtausend Werte und starten des Programms keine Rückmeldung von Excel gerade... Ich weis nicht ob das nur freezed bis es fertig ist, oder ob das jetzt endgültig gestoppt hat und überfordert ist.

Ich lass das Programm mal so laufen, hoffentlich fängt es sich wieder.

Herzlichen dank euch :D

TauLee
02.07.2014, 08:51
Also das Programm gibt komische Werte aus :(
Mensch mensch mensch habs gerade mit 5000 werten nur versucht, also vorher alle per ID definiert.

Ich glaube da beisst sich etwas mit Excel und es denkt da stehen nicht nur Werte sondern auch Funktionen.
(Ich hatte in der Ausgabe alles voll mit 10096 und 10097, also 5000 Spalten voll mit den beiden Zahlen, bis ich bei den Zuordnungen gesehen habe, das hinter 10096 ein * und hinter 10097 nichts steht.)
Gibts ne Möglichkeit Funktionen zu ignorieren, auch wenn sie dastehen?

Mc Santa
02.07.2014, 09:11
Hallo,

Ich verstehe nicht genau was passiert ist und wenn du keine Beispieldatei erstellst, musst du immer damit leben den Code an deine Bedingungen anzupassen.
Eine Beispieldatei muss keine sensiblen Daten enthalten, sondern soll nur zeigen, wie deine Datei aufgebaut ist.

VG

TauLee
02.07.2014, 09:31
Hey Santa,

ich verzweifle gerade :( Hier mal ein Stück Auszug.

Das nervige ist, dass manche Werte Namen haben wie SO*, SN*, A*
und das bemerke ich dann bei der Ausgabe von deinem Programm, welches mir
an der Stelle wo sagen wir mal ID 140 stehen sollte 14010055 steht..
Und siehe da, bei den Zuordnungen der ID's steht an stelle 10055 SO*

Kann ich entweder, alle * nichtig machen, also dass sie nicht mehr ihre Bedeutung haben, oder Alle * suchen und auf einmal mit "stern" ersetzen?
Wenn ich nach * suche is ja auch Sinnfrei :/

75903

TauLee
02.07.2014, 09:38
Das hat mich gerettet.


versuchs mal indem du bei im Suchfeld folgendes eingibst:

~*


Für alle die jemals Probleme damit haben sollten :rolleyes:

Danke euch für eure kostbare Zeit :D
Und dir Santa für den Code.

Mc Santa
02.07.2014, 09:44
Hallo,

leider kann ich in deiner hochgeladenen Datei den Fehler überhaupt nicht finden, und ID 140 auch nicht!!!

Trotzdem habe ich hier einen neuen Code für dich zum testen:
Sub ersetzen()

Application.ScreenUpdating = False

Dim wsID As Worksheet, wsSrc As Worksheet, wsTar As Worksheet
Set wsID = Sheets("Id")
Set wsSrc = Sheets("Auftrag")
Set wsTar = Sheets("Ausgabe")

wsSrc.Range("A:B").Copy wsTar.Cells(1, 1)

Dim rng As Range

wsID.Cells.Replace What:="~*", Replacement:="~*", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

With wsID
For Each rng In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
wsTar.Cells.Replace What:=rng.Offset(, 1), Replacement:=rng, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next rng
End With

wsID.Cells.Replace What:="~~*", Replacement:="*", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.ScreenUpdating = True

End Sub

Hoffe es klappt jetzt bei dir :)
Feedback erwünscht.

VG

PS:
Mein Code macht jetzt das gleiche, wie du auch schon gefunden hast ;)

TauLee
02.07.2014, 09:55
Hey Santa,
es funktioniert so weit so gut,vielen vielen Dank hierführ, aber einen Schönheitsfehler habe ich noch, welcher mich zwingt das alles per Hand nochmal zu verbessern..

ID Auftragsnummer
315 J3GW
316 J3GU
317 J3GSL03
318 J3GSL02
319 J3GSL01
320 J3GPAKET3
321 J3GPAKET2
322 J3GPAKET16
323 J3GPAKET15
324 J3GPAKET10
325 J3GPAKET1
326 J3GN
327 J3GLIAL
328 J3GK03
329 J3GK02
330 J3GK01
331 J3GJ
332 J3GI
333 J3GH
334 J4GW
335 J4GV
336 J4GQ
337 J4GON
338 J4GO
339 J4GM
340 J4GL
341 J4GK
342 J4GJ
343 J4GI
344 J4GH
345 J4GF
346 J4GE
347 J4GD
348 J4G1
349 J3G}
350 J3G|
351 J3GZ
352 J3GWKAT

Vergleiche mal den ersten und letzten Wert.
In der Ausgabe bekomme ich anstatt 352 ein 315KAT..
Möglichkeiten :rolleyes: ?

Mc Santa
02.07.2014, 10:00
Hallo,

hast du meinen letzten Code probiert? (Bitte den alten vollständig ersetzen)
Da sollte dieses Problem nicht mehr auftauchen, sonst bitte noch einmal melden, wir sind ja fast am Ziel :)

VG

TauLee
02.07.2014, 10:09
Hey,

mit dem neuen Code bekomme ich einen

Laufzeitfehler '9'
Index außerhalb des gültigen bereiches.
Wenn ich Debugge, wird mir

Set wsID = Sheets("Id")


Dieses Stück in Gelb markiert angezeigt.

Mc Santa
02.07.2014, 10:12
Hallo

Index außerhalb des gültigen Bereiches bedeutet, dass Excel kein Blatt mit dem Namen "Id" finden konnte.

Du musst also "Id" zu deinem Blattnamen ändern. Ich habe es an deine letzte Datei angepasst.
In meiner Datei heißt das entsprechende Blatt "Zuordnung"

VG

TauLee
02.07.2014, 10:30
Mc Santa, du bist mein Held!
Vielen Dank für deinen Support, es klappt alles, nichts steht mehr im Wege.

Naja ein Klitzekleines manko :grins: Aber das soll nicht weiter stören :P
(Wenn hinter einer ID kein Wert steht, ballerts mir in der Ausgabe 4 Spalten und entsprechend die Zeilen voll mit der ID). Wie gesagt das ist nich weiter schlimm, nur eine ID hatte keinen Wert zugeordnet.

SANTA I LOVE YOU!
:boah:

PS: Programm läuft grade mit 200.000 Zeilen, ich geh mal einen Rundgang machen :P

Edit: JA ER IST DURCH, ALLES LÄUFT. Santa dankeeeeeeeeeeeeeeeeeee