Live-Forum - Die aktuellen Beiträge
Datum
Titel
15.07.2024 16:00:57
15.07.2024 15:41:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 14:51:42
kkesh
Hallo,
ich habe öfter mal Zahlen die ich in folgendes Format bringen muss:
333;111;222;444;555;666
Die sind in Excel aber immer in einer Spalte untereinander angeordnet:
Ursprung :
333
111
222
111
444
555
666
Ich bräuchte ein Makro was in einer Spalte die Duplikate und leere Zeilen entfernt und die Zahlen in das oben beschriebene Format bringt. Das Makro kann diese einfach in die Spalte daneben kopieren.
https://www.herber.de/bbs/user/119412.xlsx
Danke!

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 14:54:12
Burak
Sollen denn die Duplikate nur in der Kopie der Spalte entfernt sein oder auch in der Originalspalte?
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 15:03:53
Daniel
Hi
geht im Prinzip auch ohne VBA.
hierzu diese Formel in C3 eintragen und nach unten kopieren.
Das Gesamtergebnis steht in C3
=WENN(ISTZAHL(FINDEN(";"&B3&";";";"&C4&";"));C4;B3&WENN(C4="";"";";"&C4))
Gruß Daniel
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 15:03:56
Rudi
Hallo,
in ein Modul:
Function kkesh(rngIn As Range, Optional strSep As String)
Dim rngC As Range, objOut As Object
Set objOut = CreateObject("scripting.dictionary")
If strSep = "" Then strSep = " "
For Each rngC In rngIn
If Len(rngC) Then objOut(rngC.Value) = 0
Next
kkesh = Join(objOut.keys, strSep)
End Function
E3: =kkesh(B3:B9;";")
Gruß
Rudi
Anzeige
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 15:20:47
kkesh
Hallo Rudi, danke für die Hilfe. Wenn ich es mit dem Modul mache, sehe ich es so:
333 111 222 444 555 666
Ich brauche aber das semikolon dazwischen statt der Leertaste. Danke im voraus!
333;111;222;444;555;666
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 15:23:30
kkesh
Hallo Rudi, danke für die Hilfe. Wenn ich es mit dem Modul mache, sehe ich es so:
333 111 222 444 555 666
Ich brauche aber das semikolon dazwischen statt der Leertaste. Danke im voraus!
333;111;222;444;555;666
dann hast du ;";" vergessen.
30.01.2018 15:26:16
Rudi
hab ich doch genau geschrieben:
E3: =kkesh(B3:B9;";")
AW: dann hast du ;";" vergessen.
30.01.2018 15:40:49
kkesh
Sorry, du hast recht, habe ich überlesen. Wie kann ich es so speichern, dass es immer in jeder geöffneten Excel Datei möglich ist? Ich habe versucht es im personal makro workbook abzuspeichern aber wenn ich eine neue Datei öffne, sehe ich es immer noch nicht
Anzeige
AW: dann hast du ;";" vergessen.
30.01.2018 15:41:41
kkesh
Sorry du hast recht, ich habe es überlesen. Das funktioniert super, jedoch bin ich noch nicht sicher wie ich es so abspeicher, dass ich es aus jedem Workbook heraus öffnen kann. Personal Makroworkbook hat nicht geklappt
AW: dann hast du ;";" vergessen.
30.01.2018 15:56:11
Daniel
Hi
wenn du die Funktion in jedem Workbook öffnen können willst, musst du den Makrocode entweder in einem AddIn hinterlegen (bitte mal danach im Internet für weitere Informationen suchen)
oder du hinterlegst den Code in einer Datei, welche im Autostartordner liegt und beim Starten von Excel automatisch geöffnet wird (z.B. die Personl.xlsb)
in diesem Fall musst du aber dem Funktionsnamen den Dateinamen voranstellen, damit Excel weiß, wo der Code liegt:
=Personl.xlsb!kkesh(...)
Wenn du nicht genau weißt, wie du es schreiben musst, kannst du die Funktion auch über den Funktionsassistenten einfügen und hier die Gruppe "Benutzerdefinert" auswählen.
zu beachten ist, dass eine Datei, die so eine Funktion verwendet, nicht ohne weiteres an andere Personen weiter gegeben werden kann.
Diese müssten dann sich ebenfalls dein AddIn installieren oder den Code in ihre Personl.xlsb kopieren.
Gruß Daniel
Anzeige
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 15:23:09
Werner
Hallo,
versuch mal so:
Public Sub Zahlen_in_Zelle()
Dim loLetzte As Long
With Worksheets("Tabelle9")
.Columns("A:A").RemoveDuplicates Columns:=1, Header:=xlNo
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("B1").FormulaLocal = "=TEXTVERKETTEN("";"";WAHR;A1:A" & loLetzte & ")"
.Range("B1").Value = .Range("B1").Value
End With
End Sub
Ausgegangen bin ich davon, dass deine Zahlen in Spalte A ab A1 stehen. Ausgegeben wird in B1.
Allerdings werden da in deiner Zahlenliste die doppelten Zahlen entfernt.
Gruß Werner
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 17:01:24
kkesh
Hi Werner,
erhalte folgenden Fehler: Subscript out of range.
Run time error 9
folgende Zeile wird markiert
*With Worksheets("Tabelle9")*
Wie schaffe ich es dass das Makro für jede Tabelle funktioniert, auch wenn sie einen anderen Namen hat?
Danke!
Anzeige
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 17:48:32
Werner
Hallo,
so
Public Sub Zahlen_in_Zelle()
Dim loLetzte As Long
With ActiveSheet
.Columns("A:A").RemoveDuplicates Columns:=1, Header:=xlNo
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("B1").FormulaLocal = "=TEXTVERKETTEN("";"";WAHR;A1:A" & loLetzte & ")"
.Range("B1").Value = .Range("B1").Value
End With
End Sub
geht es mit dem gerade aktiven Worksheet, egal wie dessen Name ist.
Gruß Werner
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 18:28:05
kkesh
Super danke, gibt es eine Möglichkeit eine Abfrage einzubauen wo er es ausgeben soll? In deinem Beispiel ist es B1
AW: Macro um duplikate,leere Zeilen zu entfernen
30.01.2018 20:03:19
Robert
Hallo,
folgendes Makro fragt nach der Zelle und speichert das Ergebnis in diese:
Public Sub Zahlen_in_Zelle()
Dim loLetzte As Long, strZiel As String
strZiel = InputBox("In welcher Zelle soll das Ergebnis ausgegeben werden?", "Zahlen in Zelle", " _
B1")
If strZiel = "" Then Exit Sub
With ActiveSheet
.Columns("A:A").RemoveDuplicates Columns:=1, Header:=xlNo
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(strZiel).FormulaLocal = "=TEXTVERKETTEN("";"";WAHR;A1:A" & loLetzte & ")"
.Range(strZiel).Value = .Range(strZiel).Value
End With
End Sub
Man kann es vielleicht aber auch ohne Abfrage machen. Nachstehendes Makro fügt das Ergebnis in der aktiven Zelle ein. Einfach die Zelle anklicken und das Makro starten:
Public Sub Zahlen_in_Zelle()
Dim loLetzte As Long
With ActiveSheet
.Columns("A:A").RemoveDuplicates Columns:=1, Header:=xlNo
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Selection.FormulaLocal = "=TEXTVERKETTEN("";"";WAHR;A1:A" & loLetzte & ")"
Selection.Value = Selection.Value
End With
End Sub

Gruß
Robert
Anzeige
AW: Macro um duplikate,leere Zeilen zu entfernen
31.01.2018 12:54:25
kkesh
Super danke für die schnelle Hilfe. Habe es laufen lassen und kriege als Ergebnis folgenden Wert:
#NAME?
Ich bin mir nicht sicher wieso.. Auf meinem anderen PC funktioniert es. Was mache ich da evtl falsch?
AW: Macro um duplikate,leere Zeilen zu entfernen
31.01.2018 13:13:40
Werner
Hallo,
ich würde mal vermuten, dass du auf dem Rechner eine Excel Version hast, die TEXTVERKETTEN noch nicht hat, gibt es erst ab Office 365.
Gruß Werner

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige