もう一人のY君

iPhoneアプリのレビューやアップデートレビューなどを書いています. たまに数学の記事も書きます.

もう一人のY君 MENU  MENU

【ショートカット】CSVファイルを読み込んでデータを取り出す(改造版)

181110_08

 

blog.thetheorier.com

 先日紹介した方法でも特に問題はありませんが, 処理の順序を入れ替えることでショートカットを作る側がわかりやすいものに改良しました.

 データが多い程こちらのほうが負担も少ないかもしれません.

 

ショートカット

ショートカット

  • Apple
  • 仕事効率化
  • 無料

※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.

 レビュー時のバージョン : v2.1.1

 

スポンサーリンク

 

 

データ処理の考えを変える

 前回の方法では, 読み込んだ個々のデータをすべて縦並びにし, 必要な箇所を取り込んでいました.

 

 前回の内容を振り返ると, 3種のデータ { \displaystyle a[n], b[n], c[n] } があこれを, 「テキストを分割」を2つ組み合わせることで

 

{ \displaystyle a[1] \\b[1] \\ c[1] \\ a[2] \\ b[2] \\ c[2] \\ \dots }

 

…と縦並びにしていたわけです.

 

 しかしこれだと必要なデータ行を指定するのに番号が飛び飛びになってしまい, { \displaystyle 3m-2 } のような計算を要しました.

 

 今回はデータの行単位で取り出し, 個々のデータを取得することにします.

 

 

フロー

181110_09

 まず対象のCSVファイルを読み込むことは前回と変わりません.

 但し今回はデータを分割する前に予め「カウント」アクションで読み込んだデータの行数を取得します.

 その後改めて読み込んだファイルを「変数を取得」で呼び直し, 「テキストを分割」で改行でのみ分割します.

 続いて「入力を要求」で取り込みたい行数を指定します. 先程行数が分かったので質問に行数を伝えることもできます.

 続く2つの「次の場合」は「入力を要求」でそれぞれ負数を選んでしまったとき, 行数を超えた数を入力してしまった場合の対策のためエラーチェックが不要なら必要のないものです.

 

 

181110_10

 ここからがメインとなる処理になります.

 まず「変数を取得」で「テキストを分割」の結果を呼び出し, 「入力を要求」で指定した行数個目の項目を「リストから項目を取得」で取得します.

 この時点で取得したデータは 10,23,2 …のようになっているため 「テキスト」で一旦取り込み, 「テキストを分割」で ","(カンマ) によって分割します. これで指定した行にある個々のデータを取り込むことが出来るようになりました.

 あとは再び「リストから項目を取得」で行にある欲しい列データを取り出します.

 

 

181110_11

 今回は日付を含め3種のデータがあるため同じことを3回行い, 結果を「結果を表示」などで表示するなり後の処理に渡します.

 

 

181110_12

 その後先程の行数エラーチェックを必要に応じて行います.

 

 

実行

181110_13

 あとは実行してみて結果が正しいことを確かめます.

 

 

 この手法の良い点はデータが飛び飛びになる以上に前回あったような改行処理によるデータのズレを確実に解消させることができるところです.

 

 結果としては同じですがミスと手間を考えるとこちらが良いかもしれません.

 特に行によって列データの数に偏りがある場合, 前回の手法は確実に使いものになりません.