(Gスプレッドシート)【ネタ注意】GOOGLETRANSLATE関数で和暦を西暦にする

 まともにやると厄介な和暦文字列から西暦(日付とみなされる文字列さらには日付シリアル値)への変換を、GOOGLETRANSLATE関数を使ってどうにかできないかやってみた結果です。真面目に使うべき内容ではありませんので注意してください。

  • GOOGLETRANSLATE関数による和暦から西暦への変換はそこそこ対応してくれますが、やはり信頼はおけません。
  • 令和には未対応です(2019年5月上旬現在)。

手順

f:id:accs2014:20190519123349p:plain:right:w600

 B3:B11にさまざまな和暦文字列が並んでいます。
 そこでC3に下記のように入力し、下方にコピーします。

=GOOGLETRANSLATE(B3,"ja","zh")

 日付を外国語に翻訳すると和暦が西暦化されますが、たいていSeptemberなどの「月名」が入ってしまうため、日付とみなされる文字列になりません。
 しかし中国語(zh)については例外で(韓国語も)、しかも「年・月・日」表記されるため都合がよいのです。
 

f:id:accs2014:20190519123347p:plain:right:w600

 実行結果です。
 元年表記もなんとかしてくれるのはすごいですが、末尾に全角カンマが入ったり「日」ではなく「天」になってたり令和に未対応だったりと、やはり粗があります。
 他の日付では「日」の字が抜けるケースもあるようです。

f:id:accs2014:20190519123345p:plain:right:w600

 日付シリアル値に変換するため、改めてC3に次のように入力してコピーしてみます。
 ついでに(最も多い不具合である)全角カンマの削除を行っています。

=DATEVALUE(SUBSTITUTE(GOOGLETRANSLATE(B3,"ja","zh"),",",""))

 

f:id:accs2014:20190519123342p:plain:right:w600

 実行結果です。末尾が「天」であった日付と令和の日付を除いて無事に変換されました。

f:id:accs2014:20190519123340p:plain:right:w600

 さらに表示形式を変更した様子です。
 基本的に信頼のおけないやり方ですが、令和対応さえされればほとんどの場合はうまくいきそうな気はします。

 なお、真面目にやる場合は次の記事が参考になるかもしれません。

www.officeisyours.com