ようこそゲストさん

mitc - 日記

メッセージ欄

2009年6月の日記

一覧で表示する

2009/06/27(土) Excel関数で文字列操作メモ(米国式日付文字列→日付形式)

はてブ 2009/06/27 20:35 雑記miff
ExcelExcel2007
■例題
米国式(m/d/y)の次のような日付文字列をExcelの関数を使って日付形式に変換
5/28/2007
■方針
文字列を"/"で分割してそれぞれ月,日,年としてDATE関数に渡す

■実現例
B2に対象の文字列が入っているとする
// 5/28/2007
// 1個目のスラッシュの位置を取得
 =FIND("/", B2, 1)
// 1個目のスラッシュまでを取得(月)
 =LEFT(B2, FIND("/", B2, 1)-1)

// 5/28/2007
// 2個目のスラッシュの位置を取得
 =FIND("/", B2, FIND("/", B2, 1)+1)
// 2個目のスラッシュまでを取得(日)
 =MID(B2, FIND("/", B2, 1)+1, FIND("/", B2, FIND("/", B2, 1)+1)-FIND("/", B2, 1)-1)

// 5/28/2007
// 2個目のスラッシュから最後までを取得
 =MID(B2, FIND("/", B2, FIND("/", B2, 1)+1)+1, LEN(B2)-FIND("/", B2, FIND("/", B2, 1)+1)+1)
// 2個目のスラッシュから最後までを取得して半角スペースを除去(年)
// 不要文字列の除去は必要に応じて
 =SUBSTITUTE(MID(B2, FIND("/", B2, FIND("/", B2, 1)+1)+1, LEN(B2)-FIND("/", B2, FIND("/", B2, 1)+1)+1), " ", "")

// 2007/5/28
// 日付に変換
 =DATE(SUBSTITUTE(MID(B2, FIND("/", B2, FIND("/", B2, 1)+1)+1, LEN(B2)-FIND("/", B2, FIND("/", B2, 1)+1)+1), " ", ""), LEFT(B2, FIND("/", B2, 1)-1), MID(B2, FIND("/", B2, 1)+1, FIND("/", B2, FIND("/", B2, 1)+1)-FIND("/", B2, 1)-1))
■まとめ
Excelの関数でSplit相当のことをやるのは面倒

■参考