Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro/Lösung gesucht für Doppelte Werte innerhalb einer Zelle löschen
#11
(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.


Angehängte Dateien
.xlsx   doppelte_werte_forum.xlsx (Größe: 90,13 KB / Downloads: 5)
Antworten Top
#12
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.
[-] Folgende(r) 1 Nutzer sagt Danke an Storax für diesen Beitrag:
  • GMG-CC
Antworten Top
#13
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 …
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
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
Antworten Top
#15
Ich hab es hier nochmal als Makro excel hinzugefügt


Angehängte Dateien
.xlsm   doppelte_werte_forum.xlsm (Größe: 96,35 KB / Downloads: 4)
Antworten Top
#16
Und was für einen Fehler bekommst Du, wenn Du das Makro ausführst?
Antworten Top
#17
Compile error:

Variable not defined

Nehme mal an, das es wegen der Sprache ist. Bei mir läuft excel auf Ungarisch.
Antworten Top
#18
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.
Antworten Top
#19
Mir ist damit nicht geholfen, aber trotzdem Danke!
Antworten Top
#20
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste