Werte in Zelle durch Makro sortieren und Kommata entfernen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Werte in Zelle durch Makro sortieren und Kommata entfernen

Re: Werte in Zelle durch Makro sortieren und Kommata entfernen

von Herbstkatze » Mi, 10.06.2009 16:09

Danke... Wer lesen kann, ist klar im Vorteil ;-)
Jetzt klappts natürlich!
Vielen Dank für deine Hilfe!

Re: Werte in Zelle durch Makro sortieren und Kommata entfernen

von Karolus » Mi, 10.06.2009 15:57

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

von Herbstkatze » Mi, 10.06.2009 15:49

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

von Karolus » Mi, 10.06.2009 15:41

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

von Herbstkatze » Mi, 10.06.2009 15:19

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

von Karolus » Mi, 10.06.2009 14:43

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

von Herbstkatze » Mi, 10.06.2009 14:33

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

von Karolus » Mi, 10.06.2009 13:26

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

von komma4 » Mi, 10.06.2009 12:48

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?

Werte in Zelle durch Makro sortieren und Kommata entfernen

von Herbstkatze » Mi, 10.06.2009 11:40

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!
Dateianhänge
Werte_sortiert.ods
(17.5 KiB) 29-mal heruntergeladen

Nach oben