Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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
Anzeige
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
Anzeige
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
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
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige