• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

numberformat in meerdere talen

cow18

Terugkerende gebruiker
Lid geworden
24 mei 2008
Berichten
4.516
Besturingssysteem
Windows
Office versie
Excel365
ik heb een probleem met het bepalen van de numberformat afhankelijk van de taal.
Stel ik wil voor de datum van vandaag de naam van de dag en de dag zelf en het jaar hebben, dan gebruik ik "ddd dd jjjj".
Dat lukt netjes in het nederlands en in het engels (de jjjj verandert al in yyyy) , maar in het frans is een dag een "jour" en moet dat al helemaal anders.
Met andere woorden hoe schrijf je een formule die zich aanpast aan de taal van de computer waarop je excelbestand wordt geopend en dat kan frans, duits of engels worden.

In mijn nederlandse versie schrijf ik
=TEKST(VANDAAG();"ddd dd jjjj")

maar in voorbereiding op een franstalige excel schrijf ik
=TEKST(VANDAAG();"jjj jj aaaa")
wetende dat excel wel netjes die formule vertaald naar het frans =TEXTE(AUJOURDHUI();"ddd dd jjjj") maar natuurlijk het belangrijkste stuk tussen de aanhalingstekens niet mee aanpast.

Maar dan ben ik nog niet taalonafhankelijk
 
Je kan het zo Nederlands of Frans maken:
Code:
=ALS(TEKST(DATUM(1900;1;1);"JJJJ")="1900";"ddd dd jjjj";"jjj jj aaaa")
Zet dat in een cel en geef die cel in naam.
Die naam gebruik je dan in plaats van het gedeelte tussen de aanhalingstekens.
 
Kijk eens of hier iets bij staat.
 
Zie #2.
Dat gebruik ik al jaren zonder enig probleem.

Wellicht dat dit ook handig is.
Dat maakte ik ooit voor een klant:
 

Bijlagen

tja, de oplossing van edmoor had ik eigenlijk ook kunnen verzinnen, vrij gemakkelijk.
De oplossing (in verwijzing naar popipipo) die kan nu voor het stuk tussen de vierkante haakjes vereenvoudigd worden naar ;"[$-XX-XX]..." waarbij XX gelijk is aan EN, FR, DE, ES, NL voor respektievelijk engels, frans, duits, spaans, nederlands ,maar het is het 2e stuk na die haakjes die mijn probleem waren, voor edmoor's insteek.
 
als uitsmijter
CSS:
=ALS.FOUT(KIEZEN(VERGELIJKEN(LINKS(TEKST(DATUM(1900;1;1);"[$-x-sysdate]");2);{"Zo"\"Di"\"Su"};0);"dd mm jj";"jj mm aa";"dd mm yy");"onbekende taal")

@peter59, ik voel me niet echt comfortabel met PQ, koudwatervrees, ik dacht ik ga "franse taal" vervangen door engels of duits, maar daar ging ik in de fout, dus geknoei door een beginner...

@Senso, ook bedankt, maar dat is een oplossing voor het eerste deel van de vertaling, zoals ook aangegeven in #6, maar nog niet voor het 2e deel.
 
Laatst bewerkt:
Zet ergens in een (verborgen) tabblad een datum in dd-mm-jjjj opmaak in cel A1.
Zet dan deze formule in een andere cel:

=GetDateFormatString(A1)

En gebruik deze kleine functie in een normale VBA module:
Code:
Function GetDateFormatString(rng As Range) As String
    GetDateFormatString = rng.NumberFormatLocal
End Function
Je kunt nu in je TEKST formules verwijzen naar deze cel, die je uiteraard even een naam geeft zoals "DatumOpmaak"

Omdat deze functie niet automatisch herberekend, heb ik in WOrkbook_Open een Application.CalculateFull opgenomen
 

Bijlagen

Laatst bewerkt:
Overigens heb ik de functie niet "Volatile" gemaakt, dat is wellicht handig. Nu moet je even op control+alt+shift_F9 drukken voor herberekenen van het format. In het voorbeeld is dat ondervangen door in Workbook_Open een berekening te laten doen
 
ik voel me niet echt comfortabel met PQ, koudwatervrees, ik dacht ik ga "franse taal" vervangen door engels of duits, maar daar ging ik in de fout, dus geknoei door een beginner...
Dat had ik in het begin ook.

De taal is eventueel te wijzigen in de laatste stukjes van de query dus b.v "de-DE" is Duits.

Code:
let
    Bron = Excel.CurrentWorkbook(){[Name="Tabel1"]}[Content],
    DateType = Table.TransformColumnTypes(Bron,{{"Kolom1", type date}}),
    Frans = Table.AddColumn(DateType, "Franse Datum", each Date.ToText([Kolom1], "dddd dd MMMM yyyy", "fr-FR")),
    Duits = Table.AddColumn(Frans, "Duitse datum", each Date.ToText([Kolom1], "dddd dd MMMM yyyy", "de-DE")),
    Spaans = Table.AddColumn(Duits, "Spaanse datum", each Date.ToText([Kolom1], "dddd dd MMMM yyyy", "es-ES")),
    Engels = Table.AddColumn(Spaans, "Engelse datum", each Date.ToText([Kolom1], "dddd dd MMMM yyyy", "en-US")),
    KolVerw = Table.SelectColumns(Engels,{"Franse Datum", "Duitse datum", "Spaanse datum", "Engelse datum"})
in
    KolVerw
 

Bijlagen

je hebt tegenwoordig ook een functie die tekst vertaalt.

In de engelse versie heet die 'translate' de juiste nederlandse term weet ik niet precies

Dan krijg je zoiets:

PHP:
=TRANSLATE(A1;"nl";"en")
=TRANSLATE(A1;"nl";"fr")

mIsschien kun je hier iets mee
 
Met de functie TRANSLATE() kan je tekst in Excel van de ene taal naar de andere vertalen. De functie maakt gebruik van Microsoft Translation Services.
De functie is nog in beta en heeft een internet verbinding nodig.
 
De internet verbinding zal denk ik geen probleem zijn, anders kun je ook niet reageren in dit forum
 
Het betekent uiteraard dat die functie in een offline document niet zal werken.
 
Code:
"ddd dd jjjj"

Dit gedeelte kan in een tabel gezet worden, en met vert.zoeken krijg je dan de juiste waarde: eerste kolom plaats je NL en F, in tweede kolom de benodigde schrijfwijze.

Greetz/Excelbat
 
Terug
Bovenaan Onderaan