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.

Leerzeichen nach Text und Zahlen
#11
Hallo Michael,

bei meinen primitiven Tests mit deutlich kürzeren Strings (m100.17k2 und a 1.01n4) hat es funktioniert, jetzt sieht die Sache natürlich anders aus. Leider kann ich dir keine Lösung bieten. Zu der Formel von shift-del: Zeichne dir die Formel mit dem VBA-Rekorder auf, dann hast Du die VBA-Lösung.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#12
Hi,

ohne weitere Hilfsspalten könnte es mit der Formel funktionieren.
Code:
=GLÄTTEN(ERSETZEN(ERSETZEN(A1;FINDEN(".";A1)+3;0;" ");1/MAX(INDEX(ISTZAHL(1*(TEIL(A1;ZEILE($A$1:$A$23);1)))/ZEILE($A$1:$A$23);));0;" "))

Wie mann diese dann in ein funktionierendes Makro wandelt würde mich aber auch interessieren.
Antworten Top
#13
Hallo,

ich habe jetzt zum Beispiel die Formel von Elex in die Zelle B1 kopiert, geschaut, ob das Ergebnis auch so passt, wieder auf die Formelzelle geklickt, den Makrorekorder gestartet, die Zelle verlassen, den Rekorder beendet und in den VBA-Editor gewechselt. Hier fand ich folgendes Makro

Code:
Sub Makro1()
'
' Makro1 Makro
'

'
   ActiveCell.FormulaR1C1 = _
       "=TRIM(REPLACE(REPLACE(RC[-1],FIND(""."",RC[-1])+3,0,"" ""),1/MAX(INDEX(ISNUMBER(1*(MID(RC[-1],ROW(R1C1:R23C1),1)))/ROW(R1C1:R23C1),)),0,"" ""))"
   Range("B2").Select
End Sub

und dieses ein wenig überarbeitet um es etwas flexibler zu machen.

Code:
Sub prcMichael()
  Dim lngLastRow As Long
 
  With Worksheets("Tabelle1")
     lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
     .Cells(1, 2).Resize(lngLastRow).FormulaR1C1 = _
     "=TRIM(REPLACE(REPLACE(RC[-1],FIND(""."",RC[-1])+3,0,"" ""),1/MAX(INDEX(ISNUMBER(1*(MID(RC[-1],ROW(R1C1:R" & lngLastRow _
     & "C1),1)))/ROW(R1C1:R" & lngLastRow & "C1),)),0,"" ""))"
  End With
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#14
Hallo,

eine Variante mit Autofill:


Code:
Sub Elec()
F = "=TRIM(REPLACE(REPLACE(A1,FIND(""."",A1)+3,0,"" ""),1/MAX(INDEX(ISNUMBER(1*(MID(A1,ROW($A$1:$A$23),1)))/ROW($A$1:$A$23),)),0,"" ""))"
Cells(1, 3).Formula = F
Range("C1").AutoFill Range("C1:C4")
End Sub


mfg
Antworten Top
#15
Hi

Danke für eure schnellen Antworten. Leider habe ich mich etwas unverständlich ausgedrückt. Ich möchte nicht meine Formel per Makro in die Zelle schreiben sondern das Ergebnis welches die Formel errechnet.

Gruß Elex
Antworten Top
#16
Hallo,

vielleicht mit Evaluate?

Code:
Sub prcElex()
   MsgBox Application.Evaluate("TRIM(REPLACE(REPLACE(A1,FIND(""."",A1)+3,0,"" ""),1/MAX(INDEX(ISNUMBER(1*(MID(A1,ROW($A$1:$A$18),1)))/ROW($A$1:$A$18),)),0,"" ""))")
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#17
Hallo Michael,

Ich gebe dir auch noch ein VBA Code zum Probieren.
Im Test waren die Ergebnisse gleich den Ergebnissen aus den Excel-Formeln von shift-del und mir.
Über die Codegestalltung  Blush  naja bin halt VBA Anfänger.
Code:
Private Sub CommandButton1_Click()
Dim n As Byte
Dim j As Byte
Dim NeuA As String
Dim merker As Byte
Dim merker2 As Variant

For n = 1 To 8
merker = 0
merker2 = 200
    For j = 1 To Len(Cells(n, 1))
       If Mid(Cells(n, 1), j, 1) Like "#" Then
            If merker = 0 Then
            NeuA = NeuA & " "
            merker = 1
            End If
       End If
       If Mid(Cells(n, 1), j, 1) = "." Then merker2 = 3
       If merker2 = 0 Then NeuA = NeuA & " "
       If Mid(Cells(n, 1), j, 1) <> " " Then NeuA = NeuA & Mid(Cells(n, 1), j, 1)
       merker2 = merker2 - 1
    Next j
Cells(n, 2) = NeuA
NeuA = ""
Next n
End Sub

Der Versuch mit Application.Evaluate von Steffl klappt zwar, aber eben nur für A1. Habe keine Möglichkeit gefunden  eine Schleife daraus zu machen.

Gruß Elex
Antworten Top
#18
Hallo,

(20.09.2017, 20:41)Elex schrieb: Der Versuch mit Application.Evaluate von Steffl klappt zwar, aber eben nur für A1. Habe keine Möglichkeit gefunden  eine Schleife daraus zu machen.

vielleicht so?

Code:
Sub prcElexneu()
   Dim lngLastRow As Long, lngC As Long
  
   With Worksheets("Tabelle1")
      lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
   End With
  
   For lngC = 1 To lngLastRow
      MsgBox Application.Evaluate("TRIM(REPLACE(REPLACE(A" & lngC & ",FIND(""."",A" & lngC & ")+3,0,"" ""),1/MAX(INDEX(ISNUMBER(1*(MID(A" & _
      lngC & ",ROW($A$1:$A$" & lngLastRow & "),1)))/ROW($A$1:$A$" & lngLastRow & "),)),0,"" ""))")
   Next lngC
End Sub

Eine Anmerkung: Wenn Du Zellvariablen verwendest, solltest Du statt dem Variablentyp Byte eher den Variablentyp Long verwenden.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#19
Hallo!

Wollte mir gerade noch mal den Code von Fennek holen und sehe das noch richtig was los war.
Danke an alle für das intresse.
Werde jetzt mal alles durchtesten.
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top


Gehe zu:


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