Autor
|
Thema: Unterschiedl. Wörter ersetzen durch (696 mal gelesen)
|
röhmler Mitglied Sachbearbeiter techn. Dokumentation
Beiträge: 414 Registriert: 17.02.2004 AutoCAD Mechanical 2014
|
erstellt am: 08. Mai. 2017 10:57 <-- editieren / zitieren --> Unities abgeben:
Hallo miteinander, kann man sowas in vba programmieren? Bevor ich jetzt viel Text schreibe - denke das Bild ist selbsterklärend. SPALTE D soll aussehen wie Spalte E Danke mal [Diese Nachricht wurde von röhmler am 08. Mai. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001
|
erstellt am: 08. Mai. 2017 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
|
Castell Mitglied Technical Advisor Engineering
Beiträge: 302 Registriert: 22.05.2000 Das Wissen der Menschen gehört der Menschheit.<P>SAP PLM, Notepad++, Windows 7
|
erstellt am: 08. Mai. 2017 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
|
röhmler Mitglied Sachbearbeiter techn. Dokumentation
Beiträge: 414 Registriert: 17.02.2004 AutoCAD Mechanical 2014
|
erstellt am: 08. Mai. 2017 15:07 <-- editieren / zitieren --> Unities abgeben:
Hi, weder noch. Der Kunde möchte in der Spalte D nur den Namen stehen haben, Größe, Abmaße und Norm stehen bereits in der Spalte K - desshalb nur die NAMEN, kein CAD-Wechsel oder PLM oder sonst was ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
röhmler Mitglied Sachbearbeiter techn. Dokumentation
Beiträge: 414 Registriert: 17.02.2004 AutoCAD Mechanical 2014
|
erstellt am: 08. Mai. 2017 15:37 <-- editieren / zitieren --> Unities abgeben:
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 08. Mai. 2017 17:21 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
Hallo Röhmler, Du brauchst Dir doch nur eine Hilfstabelle machen in der Du die Abkürzungen und ausgeschriebenen Texte stehen hast. Diese durchsuchst Du dann mit der im verlinkten Beitrag angegebenen Funktion. Grüße Klaus Edit: Du hast ja nach VBA gefragt, das Programm würde mit geringer Änderung das auch machen. [Diese Nachricht wurde von KlaK am 08. Mai. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
röhmler Mitglied Sachbearbeiter techn. Dokumentation
Beiträge: 414 Registriert: 17.02.2004 AutoCAD Mechanical 2014
|
erstellt am: 09. Mai. 2017 06:46 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von KlaK: Hallo Röhmler, Du brauchst Dir doch nur eine Hilfstabelle machen [Diese Nachricht wurde von KlaK am 08. Mai. 2017 editiert.]
Guten Morgen KlaK, da wir Zehntausende verschiedene Schrauben, O-Ringe, Gewindestifte etc. haben, mache ich keine Vergleichstabelle. Es wäre nett gewesen, wenn den Code dementsprechend abgeändert hättest. Ich hrage mich immer wieder bei dem Forum - ist ein Forum da, um zu schreiben, ja es geht oder es geht nicht oder kann man anderen auch helfen, gerade jetzt mit dem Code umbauen. Ich bin halt nicht fit in vba und habe gestern den ganzen Tag damit verbracht, heraus zu finden, wie man in einer Zelle was löscht, wenn in einer anderen eine Bedingung erfüllt ist. Lieber KlaK, ich würde mich sehr freuen und wäre dankbar, wenn den Code so abändern könntest, das es passt. VIELEN DANK und Danke für die Info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Castell Mitglied Technical Advisor Engineering
Beiträge: 302 Registriert: 22.05.2000 Das Wissen der Menschen gehört der Menschheit.<P>SAP PLM, Notepad++, Windows 7
|
erstellt am: 09. Mai. 2017 07:10 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
Ich habe das noch nicht ganz begriffen. Du willst die verkürzte Beschreibung der Spalte D durch die lange der Spalte E ersetzten? Ist die Kurzbeschreibung immer ohne Leerzeichen? Wenn ja, splitte den Text am Leerzeichen, lösche das erste Element und verkette dann die Spalten. Das müsste sogar in einer Formel gehen. Bin leider gerade unterwegs ohne Excel, deswegen nur die "mündliche" Beschreibung. ------------------ Viele Grüsse aus dem Schwabenländle Massimo Castell Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
röhmler Mitglied Sachbearbeiter techn. Dokumentation
Beiträge: 414 Registriert: 17.02.2004 AutoCAD Mechanical 2014
|
erstellt am: 09. Mai. 2017 07:23 <-- editieren / zitieren --> Unities abgeben:
Hallo, nein, wenn der Zellinhalt mit "ZYL.-SCHR. beginnt (egal welche Schraubengröße danach kommt), dann soll der Inhalt durch ZYLINDERSCHRAUBE ersetzt werden. Beginnt der Inhalt mit O-RING, dann soll der Inhalt durch O-RING erstzt werden, beginnt der Zellinhalt mit GEW.-STIFT soll der Inhalt durch GEWINDESTIFT ersetzt werden. Das was in SPALTE E steht soll nur der Veranschaulichung dienen - diese Spalte kommt NICHT in meiner Stückliste vor. Der Inhalt der Spalte D sollte aussehen wie der Inhalt der Spalte E DANKE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Castell Mitglied Technical Advisor Engineering
Beiträge: 302 Registriert: 22.05.2000 Das Wissen der Menschen gehört der Menschheit.<P>SAP PLM, Notepad++, Windows 7
|
erstellt am: 09. Mai. 2017 07:38 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
|
röhmler Mitglied Sachbearbeiter techn. Dokumentation
Beiträge: 414 Registriert: 17.02.2004 AutoCAD Mechanical 2014
|
erstellt am: 09. Mai. 2017 07:44 <-- editieren / zitieren --> Unities abgeben:
Hi Massimo, geht das echt nicht, nach einem Wortbeginn suchen und diesen dann ersetzten mit vba? Schau Dir mal das jpg an. Ich habe da einen Code, der Sucht nach dem Beginn: Dichtelemt und Zubeh (in den Zellen steht aber tatsächlich DICHTELEMENT-SATZ bla bla bla und/oder ZUBEHÖR: bla bla bla) Werden diese Wort/SATZBEGINNE gefunden, wird diese Zeile markiert und alle darunter liegenden und gelöscht. Ich wollte es davon ableiten, aber dazu kann ich zu wenig vba. jedenfalls wird hier nach einem ....Beginn gesucht Danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
robroy55 Ehrenmitglied V.I.P. h.c. Selbständiger Konstrukteur Elektrotechnik
Beiträge: 2549 Registriert: 13.07.2005 Elcad V5/V7 Prof. EngineeringBase V6 Prof./Power/EVU Eplan V5/P8 Prof. Sigraph(SPEL-D) V5/V8/V9/V10 Wscad V4/V5/Suite Prof. Ruplan V4.7/V4.8 Std/EVU Autocad LT 2007
|
erstellt am: 09. Mai. 2017 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
Mag ja sein dass ich zu einfach denke, aber warum nicht über Autofilter die entsprechenden Begriffe filtern und ändern. ------------------ Grüße aus Frangn Rob Habe keine Angst etwas Neues im Leben auszuprobieren. Denke einfach daran, dass Amateure die Arche erbaut haben und Profis die Titanic. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 09. Mai. 2017 08:49 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
Hallo Röhmler, Ich sehe den Sinn dieses Forums Hilfe zur Selbsthilfe zu geben, weshalb ich bei den Programmen auch meist Kommentare zum weiter Verständnis dazu schreibe. Reine Fertiglösungen ohne sich mehr in die Materie zu vertiefen kann man auch erstellen lassen und kaufen (bei mir nicht, ich mache das just for fun wenn ich gerade Zeit habe). Zu Deinem geposteten Löschprogramm: Natürlich kann man auch das Gerüst für Deinen Fall verwenden und die Tauschtabelle dort einbauen Quick & Dirty:
Code:
Sub Wert_Ersetzen()antwort = MsgBox("Ersetzen starten ?", vbYesNo) i = 1 If antwort = vbYes Then Do Until Cells(i, 4) = "" vergleich$ = Cells(i, 4) p = InStr(vergleich$, " ") If p > 0 Then vergleich$ = Left(vergleich$, p - 1) End If Select Case UCase(vergleich$) Case "ZYL.-SCHRAUBE": Cells(i, 5) = "ZYLINDERSCHRAUBE" Case "O-RING": Cells(i, 5) = "O-RING" Case Else MsgBox vergleich$ & " nicht in Liste" Cells(i, 5) = vergleich$ End Select i = i + 1 Loop End If End Sub
Nachteil gegenüber der zunächst vorgeschlagenen Vergleichstabelle mit automatischen Ersetzen über SVerweis ist hier dass das Programm bei jedem neuen Wert geändert werden und neu ausgeführt werden muß. Noch ein Hinweis: Im Löschprogramm wird nicht nach einem Beginn gesucht sondern nach einem Text innerhalb eines Textausdruckes, erkennbar an den Sternchen davor und danach. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
röhmler Mitglied Sachbearbeiter techn. Dokumentation
Beiträge: 414 Registriert: 17.02.2004 AutoCAD Mechanical 2014
|
erstellt am: 09. Mai. 2017 09:14 <-- editieren / zitieren --> Unities abgeben:
|
röhmler Mitglied Sachbearbeiter techn. Dokumentation
Beiträge: 414 Registriert: 17.02.2004 AutoCAD Mechanical 2014
|
erstellt am: 09. Mai. 2017 10:03 <-- editieren / zitieren --> Unities abgeben:
SORRY, dass ich meine Frage zu ungenau formuliert hatte. Das lange Wort muß in der Spalte E stehen, D war nur als Beispiel, wie es in E aussehen soll. Anbei zwei Bilder die verdeutlichen, was ich machen muss. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001
|
erstellt am: 09. Mai. 2017 10:57 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
SORRY, dass ich meine Frage zu ungenau formuliert hatte. Das lange Wort muß in der Spalte E stehen, D war nur als Beispiel, wie es in E aussehen soll. Anbei zwei Bilder die verdeutlichen, was ich machen muss.Der Satz macht keinen Sinn... Wie auch immer Cells(i, 4) 4 gibt die Spalte an in der gesucht wird Cells(i, 5) 5 gibt die Splate an in der Wert geschrieben wird (A=1 B=2 C=3 D=4 E=5 usw.) btw. sind solche Geschichten IMMER einfacher mit Beispiel Tabellen, mit Screenshots fängt man nur bedingt etwas an.
Code: Sub Wert_Ersetzen() antwort = MsgBox("Ersetzen starten ?", vbYesNo) i = 1 If antwort = vbYes Then Do Until Cells(i, 4) = "" vergleich$ = Cells(i, 4) p = InStr(vergleich$, " ") If p > 0 Then vergleich$ = Left(vergleich$, p - 1) End If Select Case UCase(vergleich$) Case "ZYL.-SCHRAUBE": Cells(i, 5) = "ZYLINDERSCHRAUBE" Case "O-RING": Cells(i, 5) = "O-RING" Case Else MsgBox vergleich$ & " nicht in Liste" Cells(i, 5) = vergleich$ End Select i = i + 1 Loop End IfEnd Sub
------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
röhmler Mitglied Sachbearbeiter techn. Dokumentation
Beiträge: 414 Registriert: 17.02.2004 AutoCAD Mechanical 2014
|
erstellt am: 09. Mai. 2017 11:01 <-- editieren / zitieren --> Unities abgeben:
Der Satz macht keinen Sinn??? Wieso nicht? In Spalte D steht ZYL.-SCHR. M4X16 12.9 DIN912 und drin stehen soll ZYLINDERSCHRAUBE - was macht da keinen Sinn???? Anbei Beispiel Listen "Ursprungsliste.xls" = wie sie nachm konvertieren aussieht und "Soll so aussehen.xls" nach der Überarbeitung!
[Diese Nachricht wurde von röhmler am 09. Mai. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 09. Mai. 2017 11:24 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
|
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008
|
erstellt am: 09. Mai. 2017 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
Wenn Du keine Übersetzungstabelle verwenden möchtest kannst Du das auch ohne VBA lösen: 1. temporäre Bearbeitungsspalten wie im Bild dargestellt mit Excelformel für Textextraktion ausfüllen. 2. Die Spalte mit =Links() per STRG-C in extra Spalte Kopieren mit Option nur Werte 3. STRG+F Die Begriffe Suchen und Ersetzen
------------------ mfg Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 09. Mai. 2017 11:45 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
Jetzt macht es mehr Sinn, du willst den Text direkt in Spalte E ersetzen und keinen in eine neuen Spalte schreiben. Dann muss überall Cells(i, 5) stehen dann sucht und schreibt in der selben Spalte. Bei einem Fehler gibt es aber keine Möglichkeit mehr es zu Prüfen oder Rückgängig zu machen. ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark Bernd P. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 09. Mai. 2017 13:39 <-- editieren / zitieren --> Unities abgeben: Nur für röhmler
Reines Ersetzen in einer Spalte geht natürlich auch (wie von Bernd schon angedeutet) Code:
Sub Wert_Ersetzen()antwort = MsgBox("Ersetzen starten ?", vbYesNo) i = 1 If antwort = vbYes Then Do Until Cells(i, 5) = "" ' <= Hier wird jetzt Spalte E untersucht vergleich$ = Cells(i, 5) ' <= Hier wird jetzt Spalte E untersucht p = InStr(vergleich$, " ") If p > 0 Then vergleich$ = Left(vergleich$, p - 1) End If Select Case UCase(vergleich$) Case "ZYL.-SCHRAUBE": Cells(i, 5) = "ZYLINDERSCHRAUBE" Case "O-RING": Cells(i, 5) = "O-RING" Case "GEW-STIFT": Cells(i, 5) = "GWINDESTIFT" ' mal als zusätzliches Tauschelement Case "ZYL.-STIFT": Cells(i, 5) = "ZYLINDERSTIFT" ' Die nachfolgenden Zeilen wurden auskommentiert damit nicht falsches ersetzt wird ' Case Else ' MsgBox vergleich$ & " nicht in Liste" ' Cells(i, 5) = vergleich$ End Select i = i + 1 Loop End If End Sub
Aber wie schon geschrieben: quick & dirty Normalerweise sollte man IMMER die Variablen Dimensionieren es fehlt eine Fehlerabfangroutine Rückgängig machen geht zwar über den Zurück-Botton aber dennoch hätte ich die erste Variante mit Einfügen einer zusätzlichen Spalte bevorzugt da man hier zunächst ein Vergleichsfeld hat. So, und nun auf zum VBA-Tutorial und selber mal bei einigen Tabellen üben. Das Programm enthält eigentlich nur Minimal-Grundlagen von VBA Grüße Klaus [Diese Nachricht wurde von KlaK am 09. Mai. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |