Seite 1 von 1
Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 11:40
von Herbstkatze
Hallo,
ich habe eine Tabelle, in der ich verschiedene Kategorie-IDs für eine Datenbank verknüpfe. Dadurch erhalte ich recht lange Zahlenreihen für jede Zelle, die Zahlen enthalten, die durch Kommata getrennt werden.
Jetzt hätte ich gerne, dass jede Zahl nur einmal vorkommt und nicht doppelt oder dreifach.
Ausserdem bekomme ich ein Problem bei einem Import auf einer Internetseite, wenn ich doppelte Kommas in den Zellen habe.
Im Calc-Forum habe ich in
diesem Beitrag bereits gelesen, dass man die Werte mithilfe eines Makros sortieren kann.
Gibt es eine Möglichkeit, mit einem Makro die doppelten Werte und Kommas ausfindig zu machen und zu entfernen?
Ich hänge mal eine Beispieldatei an.
Vielen Dank für eure Hilfe!
Re: Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 12:48
von komma4
Zur Lösung Deiner Aufgabenstellung braucht es kein Makro...
Doppelte Kommata entfernen: Suchen&Ersetzen nutzen
Doppelte Datensätze: Daten>Filter>Standardfilter>Zusätze... keine Duplikate, Filterergenis ausgeben nach... (neues Tabellenblatt)
Hilft Dir das?
Re: Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 13:26
von Karolus
Hallo
Lass doch in Spalte B suchen und ersetzen:
suche nach
,*
ersetzen durch
,
[x] nur in Selektion
[x] regulärer Ausdruck
in D3 nimmst du die Formel:
=ZELL_SORT(B3;",")
und ziehst nach unten
Hier ist die Function dazu:
Code: Alles auswählen
function zell_sort(zahlenstring as string ,optional trenner as string) as string
Dim Count As Integer
Dim Count2 As Integer
Dim Temp As String
if isMissing( trenner) then
trenner = " "
end if
ainput = split(zahlenstring , trenner)
if ubound(ainput) = 0 then
zell_sort = "#?trenner?#"
exit function
end if
For Count = 0 To ubound(ainput)
For Count2 = Count To ubound(ainput)
If val(ainput(Count)) > val(ainput(Count2)) Then 'val... für numerische Sortierung
Temp = ainput(Count)
ainput(Count) = ainput(Count2)
ainput(Count2) = Temp
End If
Next Count2
Next Count
zell_sort = join(ainput, trenner)
End function
Die Funktion sortiert jetzt numerisch (1,2,11,22..), nicht mehr alphanumerisch(1,11,2,22...)
Gruß Karo
Re: Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 14:33
von Herbstkatze
Das Komma-Problem habe ich anders lösen können.
Die Idee mit ZELL_SORT würde ich gerne ausprobieren, aber dazu fehlen mir leider wohl die Vorkenntnisse.
Könntest du mir das vielleicht mal in die Beispieldatei einbauen, damit ich sehe, wie man die Function anlegt?
Danke schon mal!
Re: Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 14:43
von Karolus
Hallo
Gehe nach der Anleitung im
OOo-wikivor, insbesondere das Kapitel "Quelltext übernehmen"
Gruß Karo
Re: Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 15:19
von Herbstkatze
Das gibt den BASIC syntax error aus, dass eine Function nicht erlaubt ist...
Was mache ich falsch?
Ist es ein Problem, wenn ich mit einer englischsprachigen OO-Version arbeite?
Re: Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 15:41
von Karolus
Hallo
Die Sprachversion ist sicher egal, aber mit der Fehlermeldung kann ich nichts anfangen - wann und wo kommt die Fehlermeldung?
Gruß Karo
Re: Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 15:49
von Herbstkatze
Ich habe folgendes in den Editor eingegeben, wie im Wiki beschrieben.
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
[color=#FF0000]Function[/color] zell_sort(zahlenstring as string ,optional trenner as string) as string
Dim Count As Integer
Dim Count2 As Integer
Dim Temp As String
if isMissing( trenner) then
trenner = ","
end if
ainput = split(zahlenstring , trenner)
if ubound(ainput) = 0 then
zell_sort = "#?trenner?#"
exit function
end if
For Count = 0 To ubound(ainput)
For Count2 = Count To ubound(ainput)
If val(ainput(Count)) > val(ainput(Count2)) Then 'val... für numerische Sortierung
Temp = ainput(Count)
ainput(Count) = ainput(Count2)
ainput(Count2) = Temp
End If
Next Count2
Next Count
zell_sort = join(ainput, trenner)
End function
End Sub
Und wenn ich dann in meine Zelle =zell_sort(H3) eingebe, passiert nichts, wenn ich das Makro laufen lassen will, kommt die Fehlermeldung direkt nach Sub Main.
Wie schaffe ich es, dass die Funktion funktioniert?
Re: Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 15:57
von Karolus
Hallo
In der Wiki-anleitung wird explizit erwähnt das du die automatisch generierten Zeilen 'Sub Main' und 'end Sub' entfernen sollst ....
Wiki hat geschrieben:....Es öffnet sich der Makro-Editor mit einem leeren Makro:
Sub Main
End Sub
Löschen sie die Zeilen "Sub Main" und "End Sub", markieren .....
Gruß Karo
Re: Werte in Zelle durch Makro sortieren und Kommata entfernen
Verfasst: Mi, 10.06.2009 16:09
von Herbstkatze
Danke... Wer lesen kann, ist klar im Vorteil

Jetzt klappts natürlich!
Vielen Dank für deine Hilfe!