2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PowerAppsでレコードの値を一列に入れる:Split関数(エクセルの行と列の入れ替えみたいに)

Last updated at Posted at 2021-07-28

やりたい事

アンケートで集めたデータをギャラリーコントロールで簡単に表示をしようと思ったら意外とてこずりました。

例えばデータソースに下図の様なデータがあるとします。
image.png
Googleフォームやマイクロソフトフォームで集めたデータはこの様になりがちです。

この様な横方向のデータはギャラリーでは簡単に表示できません。

ちなみに下記のコードをボタンのOnSelect属性に入れてコレクションを作って、実習をできる様にしました。

OnSelect属性=
ClearCollect(アンケート,{質問1:"あいう",質問2:"かきく",質問3:"さしす",質問4:"たちつ",質問5:"なにぬ"})

Split関数の説明

エクセルでしたら行と列の入れ替えで簡単に縦方向に変換できますが、PowerAppsにはその機能がありません。

しかし工夫をすればSplit関数で行から列へは変換ができます。(列から行への変換はできません。)

Split関数は「,(カンマ)」などの区切り記号が入った文字列をその区切り記号で分離してテーブルに入れてくれます。
試しに下記のコードをボタンのOnSelect属性に入れて「テスト」コレクションを作ります。

OnSelect属性=
ClearCollect(テスト,Split("ABC,DEF,GHI",","))

すると下図のようなコレクションができます。
image.png

With関数とSplit関数を使って行を列に変換する

このSplit関数の特性を使うと先ほどのアンケートのデータを縦方向に変換してギャラリーコントロールに表示できます。
ギャラリーを追加してそのItems属性に次のコードをコピペします。

Items属性=
With({レコード:First(アンケート)},Split(レコード.質問1 & "," & レコード.質問2 & "," &レコード.質問3 & "," &レコード.質問4 & "," &レコード.質問5, ","))

First関数で「アンケート」コレクションに入っているデータをレコード毎取得して、それをWith関数で一時的変数:「レコード」にレコード毎入れています。

With関数の第二引数で実際に行いたい数式を書きます。ここでSplit関数を使っています。
最初の「レコード.質問1」は「質問1」列の値になります。全ての列の値を「,(カンマ)」を入れて繋げて長い文字列を作っています。
そしてSplit関数の第二引数に「","」にして、区切り記号としてカンマを指定しています。

これのギャラリーの結果が下図の様になり上手くいきました。

image.png

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?