Anzeige
Archiv - Navigation
1380to1384
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

mit VBA sortieren, wenn

mit VBA sortieren, wenn
12.09.2014 12:33:14
Urs
Hallo Miteinander,
In einer aufsteigend sortierten Kolonne erhalte ich folgende Sortierung:
1x1, 104x1, 18x1, 19x1, 2x1 heraus kommen sollte aber
1x1, 2x1, 18x1, 19x1, 104x1 wie muss ich da sortieren? Was mache ich falsch?
Vielen Dank jetzt schon, Gruss Urs

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit VBA sortieren, wenn
12.09.2014 12:37:54
Rudi
Hallo,
Was mache ich falsch?
Nichts.
Das sind Texte.
In eine Hilfsspalte:
=--LINKS(A2;FINDEN("x";A2)-1)
und danach sortieren.
Gruß
Rudi

AW: mit VBA sortieren, wenn
12.09.2014 13:39:03
Urs
Hallo Rudi
Danke für Deine Antwort, schon ausprobiert. Fast ganz geklappt bis auf X und G.
Wie muss ich nun die Formel ergänzen, wenn das "x" auch ein "X" oder ein "G" sein kann?
Gruss Urs

AW: mit VBA sortieren, wenn
12.09.2014 13:56:09
Daniel
Hi
=--LINKS(A2;FINDEN("X";Wechseln(Gross(A2),"G","X"))-1)
Gruß Daniel

AW: mit VBA sortieren, wenn
12.09.2014 14:56:53
Urs
An Rud als auch Daniel,
in Excel habe ich das von Hand hinbekommen aber die Aufzeichnung bringt nichts.
Unabhängig von Zeilen- und Spaltenzahl soll eine Spalte eingefügt werden nach der Spalte bei der in der 1. Zelle "Aufbau" steht.
In der 1. Zelle der neuen Spalte soll "Aderzahl" stehen und die Zelle 2 bis XX soll die Formelfunktion von Daniel stehen wobei sein A2 durch ein OFFset in der Spalte von -1 sein soll.
Ich habe den aufgezeichneten Skript noch hier. Wie weiter? Gruss Urs
  • 
    Sub Aderzahl()
    ' Aderzahl Makro
    Columns("H:H").Select  ' =Spalte rechts von der Spalte mit "Aufbau" in der 1. Zeile
    Selection.Insert Shift:=xlToRight
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "Aderzahl"
    Range("H2").Select
    ActiveCell.FormulaR1C1 = "=--LEFT(RC(-1);FIND(""X"",WECHSELN(Gross(RC[-1]),"G","X"))-1)"
    Range("H2").Select
    Selection.AutoFill Destination:=Range("H2:H134"), Type:=xlFillDefault
    Range("H2:H134").Select               'Bis zur letzten Zeile
    ActiveWindow.SmallScroll Down:=-159   'Bis zur letzten Zeile
    End Sub
    

  • Anzeige
    AW: mit VBA sortieren, wenn
    12.09.2014 16:14:39
    Daniel
    Holla, das sind aber plötzlich viele neue Aufgaben...
    und rein aufgezeichnet kann der Code auch nicht sein, weil der Recoder keine deutschen und englischen Funktionsnamen mischt.
    Es sollte eigentlich klar sein, dass englische und deutsche Funktionnamen innerhalb der selben Formel nicht funktionieren können.
    Code sollte in etwa so aussehen:
    Sub test()
    Dim Zelle As Range
    '--- Prüfen ob Spalte schon vorhanden ist und wenn nein, einfügen
    Set Zelle = Rows(1).Find(what:="Aderzahl")
    If Zelle Is Nothing Then
    Set Zelle = Rows(1).Find(what:="Aufbau")
    Zelle.Offset(0, 1).EntireColumn.Insert
    Zelle.Offset(0, 1).Value = "Aderzahl"
    Else
    Set Zelle = Zelle.Offset(0, -1)
    End If
    '--- Formel einfügen
    With Range(Zelle.Offset(1, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, Zelle.Column))
    .FormulaR1C1 = "=--LEFT(RC1,FIND(""X"",SUBSTITUTE(UPPER(RC1),""G"",""X""))-1)"
    .Formula = .Value
    End With
    '--- Sortieren
    ActiveSheet.UsedRange.Sort key1:=Zelle.Offset(0, 1), order1:=xlAscending, Header:=xlYes
    End Sub
    
    Gruß Daniel

    Anzeige
    AW: mit VBA sortieren, wenn
    15.09.2014 09:28:16
    Urs
    Hallo Daniel
    Danke für Deine weitere Hilfe. Kolonne einfügen und 1. Zelle beschriften klappt. Aaaaaaber die folgenden Zellen zeigen nur "WERT!"
    Da ist irgend ein WURM drin.
    Was macht folgender Skript genau:
  • Else
    Set Zelle = Zelle.Offset(0, -1)
    End If
    '--- Formel einfügen
    With Range(Zelle.Offset(1, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, Zelle.Column))
    .FormulaR1C1 = "=--LEFT(RC1,FIND(""X"",SUBSTITUTE(UPPER(RC1),""G"",""X""))-1)"
    .Formula = .Value
    End With

  • Kannst Du mir da noch weiterhelfen? Wäre nett.
    Gruss Urs

    Anzeige
    AW: mit VBA sortieren, wenn
    16.09.2014 17:42:37
    Daniel
    Hi
    zunächst prüfe ich, ob schon eine Spalte "Aderzahl" vorhanden ist.
    Wenn ja, wird diese verwendet, wenn nein wird eine neue Spalte nach "Aufbau" eingefügt (dann kannst du den Code auch mehrfach laufen lassen und musst nicht jedesmal die Spalte "Aderzahl" wieder löschen)
    im zweiten Teil wird dann die Formel eingefügt, welche die Zahlen aus dem Stringtext herausliest, damit nach diesen Zahlen sortiert werden kann.
    bei mir funktioniert das Makro ohne Fehler.
    Ich habe die Datei entsprechend deinen Vorgaben aufgebaut.
    Solltest du die Datei nicht richtig beschrieben oder ich dich falsch verstanden haben, so könnte es natürlich zu fehlern kommen.
    Am besten ist, du lädst deine Datei hier mal hoch, dann kann man sich das anschauen.
    Ist wie beim Arzt.
    Wenn der Patient auf dem Tisch liegt, dann ist es relativ leicht die richtige Diagnose zu stellen (zumindest leicher, als wenn eine dritte Person ohne medizinische Fachkenntnisse nur die Symptome am Telefon beschreibt)
    Gruß Daniel

    Anzeige
    AW: mit VBA sortieren, wenn
    17.09.2014 17:45:02
    Urs
    Hallo Daniel
    vielen Dank für Deine Erläuterungen und auch Geduld. Apropos Arzt, ich habe eine neue Datei genommen um sie ins Forum zu stellen (Man geht ja gewaschen und geduscht zum Arzt :-) ). Um mir keine Blösse zugeben, habe ich das Makroskript nochmals ausprobiert, .... zum Glück, denn nun lief es auch bei mir. Also nochmals vielen Dank und einen schönen Abend.
    Gruss Urs

    Ich nochmal
    18.09.2014 08:48:19
    Urs
    Hallo Daniel,
    ich habe Deinen Rat doch nochmal befolgt. Die zurechtgestutzte Datei hatte gestern Erfolg. Die normale Datei aber nicht. Dabei habe ich heute morgen feststellen müssen, dass je nach Standort der Spalten : Artikelnummer;Norm;AE ob am Anfang siehe Register "Geht nicht" oder am Ende siehe Register "geht" das Skript Erfolg hat. Die hochgeladene Datei enthält 2 Skripts und die 2 erwähnten Register.
    https://www.herber.de/bbs/user/92698.xlsx
    Meine Frage nun: Woran liegt das?
    Gruss Urs

    Anzeige
    AW: Ich nochmal
    18.09.2014 09:03:14
    Daniel
    Keine der Sheets funktioniert.
    Das liegt aber ursächlich daran, dass das Makro fehlt.
    Es wäre besser, wenn du die Datei mit dem Makro hoch laden würdest.
    Gruß Daniel

    AW: Ich nochmal
    18.09.2014 10:38:19
    Daniel
    Hi
    aufgrund deiner Beschreibung bin ich beim Schreiben des Codes davon ausgegangen, dass die Werte, nach denen sortiert werden soll, immer in Spalte A steht.
    Daher auch die Formel mit dem Absoluten Zellbezug auf Spalte A (würdest du sehen, wenn du mal in die eingefügen Zellen reingeklickt hättest, bevor im Code die Formeln durch Werte ersetzt werden (Testen im Einzelstep ist immer hilfreich)
    Wenn das aber nicht so ist und das eigentliche Sortierkriterium (Spalte Aufbau) immer links neben der Zelle mit der Formel steht, dann musst du den Absoluten Zellbezug auf die Spalte A (RC1) in der Formel durch den Relativen Zellbezug auf die Spalte links daneben ersetzen: RC[-1]
    .FormulaR1C1 = "=--LEFT(RC[-1],FIND(""X"",SUBSTITUTE(UPPER(RC[-1]),""G"",""X""))-1)"
    gruß Daniel

    Anzeige
    Danke für Tipps, Geduld und Gelassenheit
    18.09.2014 12:00:06
    Urs
    Hallo Daniel, vielen Dank für Deine wertvollen Tipps. Gruss Urs

    Ich nochmal
    18.09.2014 08:51:46
    Urs
    Hallo Daniel,
    habe in meiner Antwort vorher vergessen das Kointrollkästchen zu aktivieren. Gruss Urs

    Dann besser wie folgt, ...
    12.09.2014 14:21:24
    Luc:-?
    …Urs:
    =WENNFEHLER(--LINKS(A2;SUCHEN("x";WECHSELN(KLEIN(A2);"g";"x"))-1);0)
    Alternativ ginge es auch mit einer UDF (in VBA pgmierte benutzer­definierte Fkt) aus dem Archiv (Button RECHERCHE → dann für Version 1.2 nochmal nach dem Thread-Titel suchen):
    =WENNFEHLER(--INDEX(SplitVx(A2;{"x"."X"."g"."G"});1);0)
    Gruß, Luc :-?

    AW: Dann besser wie folgt, ...
    16.09.2014 14:23:23
    Urs
    Hallo Rudi
    ich habe in der Recherche versucht zu suchen und bin dann immer auf meinem eigenen Thread gelandet.
    Ich habe nichts gefunden. Wie DU siehst bin ich auch mit Daniels Ergänzungen noch nicht weiter.
    Danke für weitere Hilfe. Gruss Urs

    Anzeige
    AW: Dann besser wie folgt, ...
    16.09.2014 14:25:48
    Urs
    Sorry, Luc --- ich wollte Dich nicht "Umtaufen"

    Habe ich mit einer anderen UDF ...
    16.09.2014 17:19:33
    Luc:-?
    …verwechselt, Urs;
    hierunter ist eine BspMappe aus einem Archiv-Thread zu finden, in der die UDF enthalten ist. Allerdings sind einige Teile auskommentiert, die andere, hierin nicht enthaltene UDFs enthalten. Falls die UDF so für deinen Zweck nicht zufriedenstellend fktioniert, zumal diese ältere Version noch einen kleinen Fehler enthält, musst du dich noch mal melden. Evtl kann ich dann die anderen UDFs nachliefern (hängt davon ab, ob die ggf auch andere UDFs bemühen → VPairs befindet sich evtl auch in einer hochgeladenen BspMappe, während für MaskOnX uU auch MaskOn eingesetzt wdn kann, die sich auf jeden Fall im Archiv finden lässt → letzte Wdholung verwenden, weil alte Version von 2005 von ForumsSoftware zerschossen!). Die enthaltenen Enumerationen wdn ebenfalls benötigt!
    Gruß, Luc :-?
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige