LoginSignup
0
1

More than 5 years have passed since last update.

いつか必要になるかも:エクセルでAWSのJsonを扱う際に便利な関数

Last updated at Posted at 2018-01-13

はじめに

お久しぶりです。

神谷です。いつも業務で仕方なく開発した、要るのか要らないのかよく判らないテクニックを公開しています。
今回もそんな感じの、どうでもいいテクニックです。

AWS CLIの結果のJsonをエクセルで処理してみる

「データの区切り文字」でチャチャッと出来るんですが、それが許されないような場合に。

A列に下の式を入れて、B列にAWS CLIのJsonの結果をそのまま貼り付けるような使い方を想定しています。
つまり
"key1": "value1"
"key2": "value2"

こんなのがB1,B2にあったら、A1にはvalue1、A2にはvalue2と出力されるような関数です。
誰もが一度はトライしてみて、恐らく途中で挫折してる、例の式です。

=RIGHT(LEFT(B1,FIND("""",B1,FIND("""",B1,FIND("""",B1,FIND("""",B1)+1)+1)+1)-1),LEN(LEFT(B1,FIND("""",B1,FIND("""",B1,FIND("""",B1,FIND("""",B1)+1)+1)+1)-1))-FIND("""",LEFT(B1,FIND("""",B1,FIND("""",B1,FIND("""",B1,FIND("""",B1)+1)+1)+1)-1),FIND("""",LEFT(B1,FIND("""",B1,FIND("""",B1,FIND("""",B1,FIND("""",B1)+1)+1)+1)-1),FIND("""",LEFT(B1,FIND("""",B1,FIND("""",B1,FIND("""",B1,FIND("""",B1)+1)+1)+1)-1))+1)+1))

どうですか。エクセルが沸騰しちゃいそうな関数でしょう。
で、これは
"key": true,
"key2": false

みたいに、valueがダブルコーテーションで括られていない列には対応してないです。
そういう行にはこんな式を。

=IF(LEFT(RIGHT(B1,2),1)=",",LEFT(RIGHT(B1,LEN(B1)-FIND("""",B1,FIND("""",B1)+1)-2),LEN(RIGHT(B1,LEN(B1)-FIND("""",B1,FIND("""",B1)+1)-2))-2),LEFT(RIGHT(B1,LEN(B1)-FIND("""",B1,FIND("""",B1)+1)-2),LEN(RIGHT(B1,LEN(B1)-FIND("""",B1,FIND("""",B1)+1)-2))))

上の2つの式をどうにかこうにか組み合わせれば、"value"だろうがvalueだろうが、対応出来る感じが、何となくするでしょう。
けれど、ダメです。
こんなん、メモリ食い過ぎてすぐエクセルが死にます。

なぜこんな事をしたのか

他の人に試験を任せたら、人力で一生懸命に値を比較してたので、おいおいそういうの自動化しろよと思って、あまり考えずにちゃちゃっと作ってみたのですが……
作ってると面白くなって止まらなくなったというか……
まぁそれ以前の根本的な問題ですよね。
「データの区切り文字」でやれと。
はい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1