2012-03-15 18 views
1

一貫した日付形式を使用していない同僚からワークブックを受け取りました。下記のIF文は、MIDを使用して、適切な日付形式に文字列または数値を変換して見つけることができれば、単一のステートメントを作成しようとしている中で、私の思考プロセスの概要を示します。カスタムVBA関数へのIF(w/ISTEXT、FIND、MIDから日付への変換)ステートメント

=IF(ISTEXT(F49),MID(F49, FIND("/",F49)+1, FIND("/",F49, FIND("/",F49)+1)-FIND("/",F49)-1)&"/"&LEFT(F49,FIND("/",F49,1)-1)&"/"&RIGHT(F49,2),TEXT(F49,"dd/mm/yy")) 

それが来るとき、私は初心者のビットです上記のIF文で説明した手順を実装できるカスタム関数を作成したかったのです。どんな助けや指導も大歓迎です。

は、あなたが地元アメリカの日付にヨーロッパを変換しているように見えます

GG

+1

受け取った日付の形式は何ですか?また、必要な日付形式は何ですか? – assylias

答えて

1

、ありがとうございます。これを行うにはいくつかの方法があります:

a)VBA関数[例: = ConvertDates(F49)]:

Function ConvertDates(ValueDate As Range) 
Dim Dates() As String 
Dates = Split(ValueDate.Text, "/") 
ConvertDates = Dates(1) & "/" & Dates(0) & "/" & Dates(2) 
End Function 

b)は、シート式(簡易版):

=IF(ISTEXT(F49),MID(F49,4,3)&REPLACE(F49,4,5,""),TEXT(F49,"dd/mm/yy")) 

C)の欄に日付を選択し、選択:

列にデータ>本文>次へ>次へ>列データ形式:DMY

新しい列を作成する必要がないので、3番目のオプションが最も早いかもしれないと思います。

+0

こんにちは、ありがとうございます。元のIF文が少し複雑だった理由は、元のExcelワークブックの送信者が日付を提示する方法で一貫していないためです。ヨーロッパの日付形式では、12/12/01、09/9/12、9/04/04などの日付を入れていることがあります。そのため、FIND関数を使用して/それらの間の数など – VMO

+0

私はなぜ式がより複雑であるのか分かります、私は異なる長さの日付表現を可能にするためにVBA関数を調整しました。いずれの場合でも、テキストと列は機能するはずです。 –

+0

lori_m、あなたの回答と出力に感謝します。あなたのコード提案を読んで試した後、私は上記に利用したVBA機能を学び、シンプルさと直感性にうんざりしていて、どれくらいうまく動作しているのかに驚いていました。あなたの助けやアドバイスをありがとう。 – VMO

関連する問題