Clever-Excel-Forum

Normale Version: Makro/Lösung gesucht für Doppelte Werte innerhalb einer Zelle löschen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
(07.09.2019, 15:42)Case schrieb: [ -> ]Hallo, :19:

mache eine aussagekräftige Beispieldatei und lade sie hier hoch - dann schaut schon einer von uns drüber. :21:

Anbei die Datei. Ist es auch möglich Deutsch und Englisch Wörter in separate Zellen zu schieben? z.B. die Deutschen in Spalte B, und die Englischen in Spalte C

(07.09.2019, 15:50)Storax schrieb: [ -> ]Lesen ist nicht Deine Stärke, ich habe eine Erklärung verlinkt.

Aber ich rate mal, dass in den Input Daten Fehlerwerte sind.
Obwohl das vorher aufschlagen müsste...

Also lesen und gib Dir Mühe und liefer ein MCVE.

PS Ich habe übrigens noch eine Variante geleifert, aber hast Du wohl nicht gelesen  Angry
Wobei wir beim obigen Eingangssatz sind.

Du ich habe heute erst von VBA erfahren und bin kein Programmierer.......
Benötige also mehr infos wie ich an die gewünschten Daten herankomme. Danke.
Bei mir funktioniert es.

Wenn Du erst heute von VBA erfahren hast,  ist das hier Spoonfeeding.

Zu Deiner zweiten Frage (auch so etwas mag ich nicht ... )
Ist Kindergarten englisch oder deutsch oder beides.
Hallöchen,

hab gerade gesehen, ich war mit meinem Test eine Transpose zu weit oben Sad Ich habe jetzt den letzten Code von Storax genommen und auch mit 10.000 Zeilen kein Problem.

In meinem Versuch hatte ich ja mit einer Schleife den Bereich schrittweise um 10 Zeilen erhöht. Mach das doch auch mal und schaue, ab welcher Bereichsgröße der Code den Fehler bringt. Wenn Probleme mit dem Zellinhalt existieren, müsste eigentlich schon bei der Übernahme in das Array ein Fehler kommen, aber vielleicht kann da etwas anderes nicht verarbeitet werden.

Eventuell kannst Du dann auch mal so etwa von 1 bis ca. 10 Zeilen über der Fehlermeldung die Zeilen löschen und schauen, ob der Fehler dann schon eher auftritt.

Zitat:Wie bekomme ich ein MCVE?


Eigentlich wollen das die Antworter von Dir bekommen Smile Ansonsten, ist auf der verlinkten Seite gut beschrieben …
Bei mir funktioniert es, heißt, es funktionieren beide Varianten, sowohl mit Scripting Runtime als auch mit "reinen" VBA Mitteln.
Wobei die Variante ohne Scripting Runtime natürlich schneller ist, da hat Case schon Recht Blush
Ich hab es hier nochmal als Makro excel hinzugefügt
Und was für einen Fehler bekommst Du, wenn Du das Makro ausführst?
Compile error:

Variable not defined

Nehme mal an, das es wegen der Sprache ist. Bei mir läuft excel auf Ungarisch.
Nein, das ist wg. der Falle, die ich eingebaut habe.

Wie bei  mir in der Signatur steht no spoon feeding.

Ich empfehle Macromastery, die kostenlosen Artikel reichen.
Falls Du das nicht willst, hilft Dir  vielleicht jemand anders.
Mir ist damit nicht geholfen, aber trotzdem Danke!
Hallo Tibor,

zur Erklärung des Fehlers:
Die Funktion heißt
removeDuplicatesInString(ByVal inp As String) As String
Somit muss man diesen Namen bei der Rückgabe auch genau so schreiben. Bei Dir steht aber
removeDuplicatesInStringA = Right(result, Len(result) - 1)
Also das A am Ende ist zu viel!

Unabhängig davon halte ich dieses GeTranspose für überflüssig.

Teste mal so:

Option Explicit

Const DELIMITER = " "

Function removeDuplicatesInString(ByVal inp As String) As String
   
   Dim i As Long
   Dim inpArr() As String
   Dim result As String
   
   inpArr = Split(inp, DELIMITER)
   result = DELIMITER
   
   For i = LBound(inpArr) To UBound(inpArr)
       If InStr(result, DELIMITER & Trim(inpArr(i)) & DELIMITER) = 0 Then _
           result = result & Trim(inpArr(i)) & DELIMITER
   Next i
   
   removeDuplicatesInString = Right(result, Len(result) - 1)
End Function


Sub removeRange()
  Dim i As Long
  Dim rg As Range
  Dim vDat As Variant
 
  Set rg = ActiveSheet.Range("A1:A1000").Value
  vDat = rg
 
  For i = LBound(vDat) To UBound(vDat)
      vDat(i, 1) = removeDuplicatesInString(vDat(i, 1))
  Next
 
  rg.Value = vDat
End Sub

Gruß Uwe
Seiten: 1 2 3