| |
| Design Eines Nanosatelliten Für Ein Biologisches Experiment Mit Hilfe Maßgeschneiderter Herstellungsverfahren, ein Anwenderbericht
|
Autor
|
Thema: Zelleninhalt vergelichen und ersetzen (876 / mal gelesen)
|
buecherm83 Mitglied Ingenieur IT Application Software
Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R24 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2010
|
erstellt am: 24. Apr. 2017 10:15 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe eine Excel Dokument welches importierte Daten enthält. Diese Daten haben eine eindeutige Nummer und dann einen beliebigen Text z. B. "1-1-1 Hallo Welt". Dieser Text soll durch einen entsprechenden Text der ein einem anderen Dokument steht ersetzt werden der mit der gleichen Nummer beginnt also "1-1-1 Beispieltext". In den impoierten Daten befinden sich auch weitere Daten die nicht verändert werden sollen. Diese haben keine Nummer am Anfang. Das Makro sollte also die Spalte nach allen Zellen mit einer Nummer am Anfang durchsuchen und ersetzten. Der Rest soll nicht beachtet werden. Könnt ihr mir weiterhelfen? Vielen Dank! 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: 2799 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 24. Apr. 2017 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für buecherm83
Hallo, Wenn das nur eine Spalte betrifft würde ich hier einfach eine zusätzliche (neue) Spalte einfügen und über Suchverweis (z.B.: =SVERWEIS(A2;zweiteTabelle!$A:$B;2;falsch) <= muß natürlich angepasst werden) mir die aktuellen Werte holen. Könnte man natürlich auch mit einer Abfrage verbinden ob der gesuchte Wert überhaupt vorhanden ist und je nachdem entscheiden welcher WErt in die neue Spalte eingetragen wird. Anschließend neue Spalte kopieren und Inhalte einfügen, alte Spalte löschen Sollte das nicht ausreichen => Beispielmappe als Zip-Datei hochladen Grüße Klaus PS.: Aus Deinen letzten Postings kann man sehen dass Du entweder die Antworten auf Deine Fragen nicht verfolgst oder nie eine abschließende Antwort hinterlässt. Wäre schön wenn Du diese Gepflogenheit ändern könntest damit die Antwortenden oder später den Thread lesende wissen ob die Lösung gefunden wurde. Und es gibt auch das zusätzlich das grüne Gelöst-Häkchen.
[Diese Nachricht wurde von KlaK am 24. Apr. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
buecherm83 Mitglied Ingenieur IT Application Software
Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R24 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2010
|
erstellt am: 25. Apr. 2017 08:38 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank schon einmal. Mit dem Suchverweis komme ich nicht weiter. Ich habe eine Beispielmappe angehangen. Das erste Arbeitsblatt soll steht für die importierten Werte. Das zweite für die Werte mit denen vergelichen und anschließend ausgetausch werden soll. Als drittes Arbeitsblatt das gewünschte Ergebnis. Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3424 Registriert: 07.06.2001
|
erstellt am: 25. Apr. 2017 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für buecherm83
Servus, anbei die Datei mit Sverweis. Idealerweise ist bei solchen 'Geschichten' die ID (1-1-1) in einer getrennten Zelle. Anmerkung - Das Trennzeichen zwischen ID und Bezeichnung ist das erste Leerzeichen. - Wennfehler, dann Alte Bezeichnung. ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark Bernd P. [Diese Nachricht wurde von Bernd P am 25. Apr. 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: 2799 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 25. Apr. 2017 16:40 <-- editieren / zitieren --> Unities abgeben: Nur für buecherm83
Hallo buecherm83, Genauso wie von Bernd erzeugt hätte ich es auch gemacht. Durch die Verwendung der Teil- und WennFehler-Funktion im SVerweis hat er es sogar noch etwas eleganter gelöst als bei meiner üblichen Vorgehensweise. Der Vollständigkeit halber, man könnte es natürlich auch über ein Makro lösen. Hier ein einfacher Code dazu bei dem die Werte in die Ergebnistabelle übernommen werden:
Code:
Sub Zellen_Aendern() On Error GoTo Err_Handler Dim wb As Workbook Dim wsA As Worksheet ' Ausgangswerte Dim wsV As Worksheet ' Vergleich Dim wsE As Worksheet ' Ergebnis Dim sA As Long, rA As Long ' Spalte und Reihe Ausgangswerte Dim sV As Long, rV As Long ' Spalte und Reihe Vergleichswerte Dim lV As Long ' Anzahl der Vergleichszeilen Set wb = ActiveWorkbook Set wsA = wb.Sheets("Importierte Werte") ' <= Hier Eintrag der verwendeten Blätter ' Ausgang = Import Set wsV = wb.Sheets("Vergleich_Austausch") ' Vergleich Austaausch Set wsE = wb.Sheets("Ergebnis") ' Ergebnis sA = 2 ' Spalte B <= Hier Eintrag der Ausgangsspalte rA = 1 ' Beginn Zeile 1 sV = 2: rV = 1 ' Spalte und Zeile Beginn der Vergleichswerte lV = 1 ' Speichert Anzahl der Zeilen in Vergleichstabelle ' Holen der letzten Zeile im Vergleichstabelle While Not IsEmpty(wsV.Cells(lV, sV)) lV = lV + 1 Wend Dim strA As String ' speichert Importtext Dim strV As String ' speichert Vergleichstext Dim strSuch As String ' speichert gesuchte Positionsnummer Dim p As Integer ' tempVariable Dim I As Long ' tempVariable Dim bFound As Boolean ' Hilfvariable für Suche ' Ausgangsspalte durchsuchen bis zum ersten leeren Wert Do While Not IsEmpty(wsA.Cells(rA, sA)) bFound = False ' erstmal falsch = nicht gefunden strA = wsA.Cells(rA, sA) ' Vergleichstext aus Import holen p = InStr(strA, " ") ' Anzahl der Zeichen der Positionsnummer bestimmen If p > 0 Then ' Nur wenn nach PosNr. noch Text Vergleich fortführen strSuch = Left(strA, p) ' Positionsnummer holen mit Leerzeichen da ansonsten "1-1" mit "1-1-1" gleichgesetzt wird ' Ist der Text wirklich eine Positionsnummer? Kennzeichen "-" vorhanden ? If InStr(strSuch, "-") > 0 Then ' Ersatztext suchen For I = 1 To lV strV = wsV.Cells(I, sV) If Left(strV, Len(strSuch)) = strSuch Then bFound = True Exit For End If Next I End If End If ' Übergabe der Texte If bFound = True Then wsV.Cells(I, sV).Copy Destination:=wsE.Cells(rA, sA) ' Austauschtext Else wsA.Cells(rA, sA).Copy Destination:=wsE.Cells(rA, sA) ' Importtext End If ' Ausgangsformat übernehmen wsA.Cells(rA, sA).Copy wsE.Cells(rA, sA).PasteSpecial Paste:=xlPasteFormats rA = rA + 1 Loop Exit Sub Err_Handler: MsgBox "Fehler : " & Err.Number & vbCrLf & Err.Description Stop Resume Next End Sub
Grüße Klaus [Diese Nachricht wurde von KlaK am 25. Apr. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
buecherm83 Mitglied Ingenieur IT Application Software
Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R24 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2010
|
erstellt am: 26. Apr. 2017 10:19 <-- editieren / zitieren --> Unities abgeben:
|