| |  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: mehrere Begriffe in einer Tabelle ersetzen (3809 mal gelesen)
|
kabrijo Mitglied

 Beiträge: 11 Registriert: 19.01.2006 MS-Excel 2003, SP2
|
erstellt am: 26. Mrz. 2007 17:05 <-- editieren / zitieren --> Unities abgeben:         
Hallo, da bin ich wieder. Ich muß immer wieder Begriffe in automatisch erstellten Tabellen ersetzen. Z. Bsp. 1710517002 in 1710517-002 oder 51604A in 51604AE. Ich möchte gerne eine Tabelle für den Originalbegriff und den Ersatzbegriff erstellen (A1 = Original/Suchbegriff, B1 = Ersatzbegriff), so dass Excel dann automatisch die Suchbegriffe (A1, A2, etc.) in einer beliebigen Tabelle sucht und durch die Ersatzbegriffe (B1, B2, etc.)ersetzt. Geht sowas? Ich bau auf Euch! mfg Kay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
       

 Beiträge: 8086 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 26. Mrz. 2007 18:37 <-- editieren / zitieren --> Unities abgeben:          Nur für kabrijo
Tag auch, so z.B.: Code: Option Explicit Sub SuchenUndErsetzen() Dim LZATab1 As Integer, LZATab2 As Integer, i As Integer Dim cell As RangeLZATab1 = Tabelle1.Columns(1).Find("*", [A1], , , xlByRows, xlPrevious).Row LZATab2 = Tabelle2.Columns(1).Find("*", [A1], , , xlByRows, xlPrevious).Row Tabelle1.Activate For i = 1 To LZATab2 For Each cell In Tabelle1.Range(Cells(1, 1), Cells(LZATab1, 1)) cell.Replace What:=Tabelle2.Cells(i, 1).Value, Replacement:=Tabelle2.Cells(i, 2).Value, LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Next cell Next i End Sub
Ersetzt in Tabelle1, SpalteA alles, was er in Tabelle2, Spalte A findet mit Tabelle2, SpalteB [rredit] kleine Anmerkung: hab grade gemerkt, dass das Tabellenblatt in dem gesucht und ersetzt wird (also hier: Tabelle1) aktiv sein muß. [/rredit]Als Ansatz. Macht das ganze erstmal nur innerhalb einer Mappe. Das aus ner anderen Mappe zu holen ist jetzt Dein Part. Lösung stellste dann rein, OK? Ne schöne Eingabeaufforderung, um die entsprechenden Dateien zu wählen, hat der Thomas Harmening übrigens mal gemacht bin aber zu faul zum Suchen ;-) [rredit2] Als Hilfe für's ausbauen und für's nächste Mal: mein Weg zum Ziel: Ich hab den MakroRekorder mal angeworfen und geschaut, wie der denn wohl ein Suchen&Ersetzen realisiert. Wenn man dann diese Tipps beherzigt, kann man mit dem durchaus was anfangen ;-). Dann hab ich überlegt, welche Daten er durchsuchen soll (jede Zelle in Tabelle1.SpalteA) und womit er vergleichen soll (Tabelle2.SpalteA) und womit er die Fundstücke ersetzen soll (Tabelle2.SpalteB). Das ganze also in zwei Schleifen gepackt und so ein bestimmt ausbaufähiges ;-) aber dennoch für den Anfang mal brauchbares Makro zusammengeflickt. [/rredit2] Und nu is wirklich Schluß mit editieren ;-) ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
      

 Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 26. Mrz. 2007 19:24 <-- editieren / zitieren --> Unities abgeben:          Nur für kabrijo
|
kabrijo Mitglied

 Beiträge: 11 Registriert: 19.01.2006 MS-Excel 2003, SP2
|
erstellt am: 27. Mrz. 2007 09:50 <-- editieren / zitieren --> Unities abgeben:         
Danke Euch beiden. Habe das Osterei von Thomas gefunden (war jezt ja nicht mehr wirklich schwer ;-) ) und mit runkeruebes edit zusammengefügt: Sub SuchenUndErsetzenTabelleWaehlen() Dim LetzteZeile As Integer Dim nr As Integer WBa = ActiveWorkbook.Name GetMappe = Application.GetOpenFilename("xls-Dateien (*.xls),*.xls", , "bitte die xls-Dateien für das Zusammenführen auswählen!", MultiSelect:=True) If TypeName(NameZiel) = "Boolean" Then Beep MsgBox "Sie müssen eine Datei auswählen!" Exit Sub End If For nr = LBound(GetMappe) To UBound(GetMappe) LetzteZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row '(in Spalte 2) 'msgbox - nur als Hilfe MsgBox "Die letzte Zeile, die einen Wert beinhaltet ist: " & LetzteZeile, vbInformation, "Is nicht wahr! :-)" Workbooks.Open Filename:=GetMappe(nr) WBd = ActiveWorkbook.Name Set cpy = Range("B15:@O" & ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row) 'B15 bis zur letzten Zeile! Workbooks(WBa).Activate cpy.Copy Destination:=Worksheets("Liste").Cells(LetzteZeile + 1, 2) 'Kopieren Workbooks(WBd).Close SaveChanges:=False Next nr End Sub Sub SuchenUndErsetzen() Dim LZATab1 As Integer, LZATab2 As Integer, i As Integer Dim cell As Range LZATab1 = Tabelle1.Columns(1).Find("*", [A1], , , xlByRows, xlPrevious).Row LZATab2 = Tabelle2.Columns(1).Find("*", [A1], , , xlByRows, xlPrevious).Row Tabelle1.Activate For i = 1 To LZATab2 For Each cell In Tabelle1.Range(Cells(1, 1), Cells(LZATab1, 1)) cell.Replace What:=Tabelle2.Cells(i, 1).Value, Replacement:=Tabelle2.Cells(i, 2).Value, LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Next cell Next i End Sub Ich habe das Makro in der Tabelle mit den Such- und Ersetz-Begriffen eingefügt. Diese Mappe ist aktiv. Ich führe das Maktro aus und wähle die Zielmappe aus. Jetzt kommen folgende Fehlermeldungen (Siehe Anhang: Fehlermeldung I & II). Leider habe ich nicht wirklich Ahnung von Makroprogrammierung, also bau ich wieder auf Euch! Kay
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
       

 Beiträge: 8086 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 27. Mrz. 2007 09:56 <-- editieren / zitieren --> Unities abgeben:          Nur für kabrijo
moin moin, sehr aussagekräftig, die "Fehlermeldungen" ;-) Die erste ist keine, das is ne Info-Box von Thomas Zitat: 'msgbox - nur als Hilfe MsgBox "Die letzte Zeile, die einen Wert beinhaltet ist: " & LetzteZeile, vbInformation, "Is nicht wahr! :-)"
bei der 2. wäre spannend, wo das auftritt, ich vermute mal hier:
Code: Set cpy = Range("B15:@O" & ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row) 'B15 bis zur letzten Zeile!
weil Du wahrscheinlich das hier : Zitat: @ entfernen -wegen dem Grapischen Smilie *grummel*
nicht beachtet hast ;-) mach mal und probier neu.------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
   
 Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 27. Mrz. 2007 10:00 <-- editieren / zitieren --> Unities abgeben:          Nur für kabrijo
|
runkelruebe Moderator Straßen- / Tiefbau
       

 Beiträge: 8086 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 27. Mrz. 2007 10:14 <-- editieren / zitieren --> Unities abgeben:          Nur für kabrijo
@Paulchen jo, man kann sich auch nen Wolf wechseln ;-) aber kannste damit das: Zitat: so dass Excel dann automatisch die Suchbegriffe (A1, A2, etc.) in einer beliebigen Tabelle sucht und durch die Ersatzbegriffe (B1, B2, etc.)ersetzt.
? Eher aufwändig, oder? und @kabrijo: Zitat: Leider habe ich nicht wirklich Ahnung von Makroprogrammierung, also bau ich wieder auf Euch!
das wird auf Dauer nich hinhauen ;-) Wir sind nicht immer da, vor allem nicht, wenn's brennt. Du wirst da noch so einiges anpassen müssen... Ich empfehle mal in den VBA-Editor zu wechseln und da gehst Du Schritt für Schritt das Makro durch (mit F8) und schaust, was da im Einzelnen passiert. Es gibt Maus-hints, das Lokalfenster und den Direktbereich. Alles mal anschauen, F1 dabei und dann haben wir ne reelle Chance, dass das was wird ;-) ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kabrijo Mitglied

 Beiträge: 11 Registriert: 19.01.2006 MS-Excel 2003, SP2
|
erstellt am: 27. Mrz. 2007 14:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo runkelruebe. Habe es genau so gemacht, wie Du es mir nahe gelegt hast. Dann kam Fehlermeldung III Set cpy = Range("B15 " & ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row) 'B15 bis zur letzten Zeile! Workbooks(WBa).Activate bis hier ging es und dann kam die Fehlermeldung cpy.Copy Destination:=Worksheets("Liste").Cells(LetzteZeile + 1, 2) 'Kopieren Workbooks(WBd).Close SaveChanges:=False Next nr End Sub Dein Edit klappt übrigens, Danke dafür Nun muß ich nur noch beide zusdammenbringen. Bzgl. der Makroprogrammierung: Ich denke Du hast Recht, aber ich fang lieber klein an. Vielleicht verstehe ich aber trotzdem, was wir da jetzt machen. LG Kay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kabrijo Mitglied

 Beiträge: 11 Registriert: 19.01.2006 MS-Excel 2003, SP2
|
erstellt am: 27. Mrz. 2007 14:56 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |