Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1792to1796
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

Text in Variable ersetzen

Text in Variable ersetzen
20.11.2020 18:59:43
HannesStein
Hi
habe einen Textstring, den ich ersetzen möchte.
Wenn der Textstring "JAN" ist, soll 1 rauskommen.
Wenn der Textstring "FEB" ist, soll 2 rauskommen.
Wenn der Textstring "MAR" ist, soll 3 rauskommen.
Wenn der Textstring "APR" ist, soll 4 rauskommen.
Wenn der Textstring "MAY" ist, soll 5 rauskommen.
...
Wenn der Textstring "DEC" ist, soll 12 rauskommen.
Wie geht das in VBA? Habe da eine schlaue (fast) Ein-Zeilen-Lösung mit Arr("JAN","FEB", ...) oder so ähnlich dunkel in Erinnerung, weiss es aber nicht mehr genau. Finde es leider auch nicht mehr. Weiss auch nicht, wonach ich dazu suchen muss.
Gruss, Hannes

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text in Variable ersetzen
20.11.2020 19:11:40
volti
Hallo Hannes,
eine Idee ohne Array:
Code:
[Cc]

Sub Test() Dim sMonat As String, iMon As Integer sMonat = "dec" iMon = (InStr(1, " JAN FEB MAY APR MAY JUN JUL AUG SEP OCT NOV DEC", sMonat, 1) \ 4) Debug.Print iMon End Sub

____________
viele Grüße 😊
Karl-Heinz

Anzeige
AW: Text in Variable ersetzen
20.11.2020 19:13:27
Daniel
Hi
beispielsweise
Instr("xxJANFEBMAR...DEC", Textstring) / 3
Vielleicht geht auch
Month(Val(Textstring & "/1"))

Dh du bastelst einen Text, der wie ein amerikanisches Datum aussieht, wandelt dieses mit VAL in ein solches (CDate braucht deutsches Format) und nimmt den Monat.
Gruß Daniel
AW: Die 2.Variante fktioniert mit Monatsnamen nicht, …
20.11.2020 20:46:42
Daniel
ja Luc d. hte ih ncht gttst
VAL knn dch ncht ds glch w d xl-Fktt VAlUE
flgnds knnt fktn; Month(evaluate("Value(""1 " & Textstring & """)"))
Ja, das ginge! owT
21.11.2020 03:55:56
Luc:?
:-?
AW: Die 2.Variante fktioniert mit Monatsnamen nicht, …
20.11.2020 20:51:02
HannesStein
Hi
OK, wenn aber die Worte unterschiedlich lang sind? Dachte, es gibt einen Weg, ohne Schleife das k-te Element eines Arrays(*) zu identifizieren und dann das kte Element eines anderen Arrays zurückzugeben.
(*) ja, Array, kein Dict oder Coll.
Dennoch, für meinen konkreten Fall: Daniel, Deine erste Lösung funktioniert bestens. Danke.
Gruss, Hannes
AW: Die 2.Variante fktioniert mit Monatsnamen nicht, …
20.11.2020 21:25:47
Daniel
Hi
ja, du kannst mit Application.Match die Position eines Wertes innerhalb eines Arrays ermitteln
(analog der Excelfunktion Vergleich).
Application.Match("May", Array("Jan", "Feb", "Mar", ..., "Dec"), 0)
Gruß Daniel
Anzeige
Nutze ein "eingebautes" Array
21.11.2020 08:31:41
RPP63
Moin!
Folgendes ergibt die gewünschte Monatszahl:
Modul Modul1
Option Explicit 
 
Sub Monatszahl() 
Debug.Print Month2Digit("Dec") 
End Sub 
 
Function Month2Digit&(Monatskurzstring$) 
With Application 
  Month2Digit = .Match(Monatskurzstring, .GetCustomListContents(3), 0) 
End With 
End Function 
Gruß Ralf
Anzeige
Geht natürlich auch vice versa
21.11.2020 08:57:31
RPP63
Sub Test()
Debug.Print Digit2Month(10)
End Sub

Function Digit2Month$(Monatsziffer$)
Digit2Month = Application.GetCustomListContents(3)(Monatsziffer)
End Function
Ergibt Oct

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige