analytic-vba のすべての投稿

難解そうなPower Automateのデータ操作コネクタの概要に触れる

【データ操作コネクタにはデータの扱いそのものに強くなれる機能が満載です】

Power Automateには「データ操作」コネクタがあります

このコネクタを使いこなせると、Formsで受け取ったデータの扱いやCSVの扱いなど、データ操作自体に強くなれます

今回は、実際のアクション別に概要に触れていきます

記事の最後にはこのコネクタを使う隠れた秘訣も2つ解説します

作成アクション

作成アクションでは様々なデータを作成できます

このアクションの特徴は形式を自動的に認識してくれることです

実際に下の画像のようなデータを入力してフローを動かしてみます

そして、実行結果から「未加工出力の表示」をクリックします

するときちんとダブルクォーテーションが入力され、文字列と認識されているのが分かります

次は配列を入力してみます

今度もちゃんと配列で出力されています

結合アクション

結合アクションでは、配列を指定した区切り文字で結合処理を行うことができます

例えば、前述の「作成2」の配列を;で結合したいとします

画像に alt 属性が指定されていません。ファイル名: image-16.png

この場合は下の画像のように結合アクションを作成します

指定する2段の箇所の内、1番目の段には結合する配列を動的コンテンツにて指定します

2番目の段には区切り文字「;」を指定します

そして、実際にフローを動かすと配列内の文字列が結合されます

選択アクション

以下のようなオブジェクト*が、作成アクションを通じて作成してあるとします

*文脈によっては配列という場合もあると思いますが、ここでは分かりやすくするためにオブジェクトとします

オブジェクトの項目は名前、身長、体重の3つがあります

こちらを1つなどに絞り込むのに、選択アクションが使えます

上の画像の「開始」には動的コンテンツで配列が作成されたアクション名を指定します

そしてマップの名前にはオブジェクトの項目名(キー名)を指定します

右側にはitem関数にて値を設定します

このItem関数を使うのがこのアクションのポイントです

このItem関数により、取得したオブジェクトの項目を抽出します

項目の仕方は「?」を追加した後、項目名を[”]内に指定します

それでは実際にフローを実行します

アレイのフィルター処理

選択アクションでは3つの項目がある配列から1つに絞り込みました

「アレイのフィルター処理」では条件に合う配列の内容に絞り込みます

上記の画像は実際のアレイのフィルター処理の内容です

「差出人」という表現になっていますが、こちらでは動的コンテンツにて配列を指定します

差出人の下の欄では前述のItem関数を使用して条件を指定します

次の画像の実際にフローを実行した際の出力内容です

オブジェクトの内容が「Aさん」のものに絞り込まれています

CSVテーブルの作成

CSVテーブルの作成アクションでは、オブジェクトからCSVファイルを作成することができます

今回は、前述の「アレイのフィルター処理」を動的コンテンツで指定しています

「作成したCSVファイル」アクションで出力された内容は「ファイルの作成」アクションを通じ、Sharepointサイトに出力します

実際にフローを動かすと、以下の内容が「作成したCSVファイル」アクションが出力されます

そして、ファイルの作成アクションを通じて、指定フォルダー内に以下のようなCSVファイルが作成されます

HTMLテーブルの作成

こちらはCSVテーブルの作成とほぼ同じ内容になりますので、詳細は割愛します

実際の使用例としてメール内に出力してみます

本文内では動的なコンテンツで「HTMLテーブルの作成」を設定します

実際にフローを動かすと「HTMLテーブルの作成」アクションで出力された内容が、送信したメール本文内に出力されます

JSONの解析

JSONの解析については、作成とセットで解説させて頂きます

最終的には、一見利用できないようなデータから必要なデータを抽出できるようにします

コンテンツ

JSONの解析ではまず、解析する内容を指定します

今回は前述の作成3を使用します

こちらの内容は、JSONの解析の「コンテンツ」に動的コンテンツにて設定します

スキーマ

まずフローを実行した履歴から「作成3」出力結果をコピーしておきます

その後、「サンプルから生成」をクリックします

すると、次のGIF画像のように新たな入力画面が開きます

入力画面はに、前述コピーした内容を貼り付けます

作成

作成アクションでは「JSONの解析」の内容を繰り返し処理により取得します

下のGIF画像のように、作成アクションで「JSONの解析」の内容を動的コンテンツで取得すると「Apply to each」が自動的に適用されます

下の内容が実際にフローを動かしたときの作成アクションの内容になります

<まとめ>

今回はPower Automateの「データ操作コネクタ」の概要について解説しました

このコネクタの操作に慣れると、Power automate活用の幅は格段に広がります

実際の使用例についてはまた別途、記事を書こうと思います

最後にこのコネクタを上手に使うための隠れたポイントを2つ解説します

ポイント1

「データ操作コネクタ」を動的コンテンツで取得するケースがはとても多いです

通常だと「作成~」となってしまい、区別があまりつかなくなってしまいます

ですので、アクション名については明確に区別がつく名前をつけておきましょう

ポイント2

「データ操作コネクタ」では、他のデータ操作コネクタを動的コンテンツを通じて参照するケースが多いです

ところが、参照したものが「出力」や「本文」というような2文字に集約されて表示されるので、何を参照したかよくわからなくなってしまいます

この場合はアクションの右上の三点リーダーから「コードのプレビュー」を使用しましょう!

どのアクションを参照したかが良く分かります

ちなみに、上の画像ではアクション名は「作成 3」なのに「作成_3」と表示されています

これはアクション名に空白がある場合は、_で置き換えられることを意味します

今回の記事では関数は扱いませんでしたが、関数でアクション名を使用する際は_を意識しないとエラーになるケースがあるので注意が必要です

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power Automateでエクセル関数のように文字列(表示)操作をする方法

【Power Automateでもエクセルと同じように、関数を使いこなして文字列操作しよう!】

Power Automateを使用する際に、エクセルを使用している時と同じように「LEFT関数」や「RIGHT関数」を使いたい時があると思います

Power Automateでも関数は使えるのですが、エクセルとは少し勝手が違います

今回の記事では「エクセルとの勝手の違い」を交えながら、日付を含む文字列などの表示操作について解説していきたいと思います

文字列の切り取り

Power AutomateではLEFT関数やRIGHT関数はありません

ですので、エクセルで言えばMID関数に相当するSubstring関数を使用します

MID関数では文字位置を指定して、指定した長さを切り取ります

Power AutomateのSubstring関数も同様の機能です

Substring関数の文法は次のようになります

Substring(①対象文字列,②開始位置,③切り取り文字列の長さ)

LEFT関数

例えば、文字列「123456789」から左側4文字を切り取りたいとします

この場合、Substring関数の引数②開始位置を0で指定するのがポイントです

上の画像では変数:操作対象文字列に文字列「123456789」が設定されています

こちらを変数の設定アクション内でSubstring関数を使用し、左4文字を切り取ります

上の画像の式の中身は以下の通りとなります

substring(variables(‘操作対象文字列’),0,4)

「variables~文字列’)」の箇所は動的コンテンツで取得するのもよし、直接variablesと書いても大丈夫です

前述の通り、0で開始位置を指定し、第三引数で切り取りたい文字数を指定しています

これで下の画像のように、Power Automateを動かすと文字列1234が123456789から切り取りできます

RIGHT関数

LEFT関数と比べると少し難易度があがりますが、パターンは決まっています

LENGTH関数で文字列の長さを取得し、開始位置を指定します

開始位置は(文字列の長さ-切り取る長さ)となります

今回で言えば、9文字:123456789から4文字:6789を引いた5が開始位置になります

*この関数は0からカウントが始まります。ですので、エクセルで言えば6が開始位置です

但し、ここでエクセルとの違いがでてきます

エクセルにて引き算をする際は、ーを使用すればOKです

Power Automateの場合はSub関数を使用します

ここが少し面倒なところです

ですので、式は以下のようになります

substring(variables(‘操作対象文字列’),sub(length(variables(‘操作対象文字列’)),4),4)

上の式から第二引数を抜き出すと次の通りとなります

sub(length(variables(‘操作対象文字列’)),4)

length関数で「操作対象文字列」の長さを取得しているのは分かりやすいと思います

ここで取得した長さから4を引くのに、前述のsub関数の第二引数にて4を指定しています

これで下の画像のように、Power Automateを動かすと文字列6789が123456789から切り取りできます

数値の桁区切り

エクセルでは数値の桁区切りは関数で処理しません

画面上にメニューがちゃんとあります

Power Automateの場合は、関数で処理を行います

使用する関数はformatNumber関数です

エクセルとの違いは、formatNumber関数により文字列に変換されます

ここが注意点です

次が実際の式です

formatNumber(variables(①’操作対象文字列’),②’#,#’,③’ja-jp’)

①が操作対象です

こちらは整数形式のものを指定します

②で表示形式を指定し、③は固定の指定になります

これで数値の桁区切りになります

日付形式

Power Automate内でよく下の画像のような日付を見ることがあると思います

TやZが入っていいるのもあって、そのままでは表示データとしては使えません

ただし、この記事ではこれ以上はタイムゾーンに触れず、純粋にこの表示形式を変える方法を解説します

このTやZは、タイムゾーンと関連します

この日付表示を変えるにはformatDateTime関数を使用します

例えば、タイムゾーンに関係なくutcNowという関数で現在時刻を出したとします

この場合は前述のような表示になります

こちらをTやZがない「yyyy/MM/dd形式」にするには、次のようにformatDateTime関数を使用します

formatDateTime(①utcNow(),②’yyyy/MM/dd’)

①は変換対象です

②で表示形式を指定するのですが、シングルクオーテーションを使用します

ここがエクセルとの違いであり、注意点となります

文字列の発見

エクセルにはFIND関数という関数があり、文字列に含まれる指定文字列の位置を取得できます

Power automate でも同じような機能があります

関数ではないですが、ぜひこの記事で紹介しておきたいです

文字列で発見するには、「テキストの位置の検索」アクションを使用します

「テキストの位置の検索」アクションでは2つの項目を使用します

テキスト:操作対象文字列(123456789)

検索テキスト:検索文字列(6789)

上の画像では、テキストと検索テキストの内容は変数で事前に設定してあります

「テキストの位置の検索」アクション内では、動的コンテンツで設定した変数を参照しています

では、この「テキストの位置の検索」を実際に動かすとどうなるでしょうか?

上の画像では6ではなく「5」という結果になりました

これは0からカウント方法によります

このアクション内では1では0からカウントが始まるからです

<まとめ>

今回はPower Automateにて、文字列や表示を変換する方法を紹介しました

エクセルと方法が少し違いますが、違うパターンは決まっているのですぐに慣れていくと思います

特にSubstring関数はCSVを変換する時などよく使うので、今回を機会にぜひ慣れて頂くといいと思います

とにかくクラウド作業を省力化するにはPower Automateは欠かせません

ぜひ有効活用してみてください!

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

エクセルのような表をアプリで簡単に作成してPDF化する方法~ガッツの日記第11回

【エクセルでシート別にわざわざ表を作成しなくても、簡単に表は作成できるんです!】

先日、PDFでデータを送付するため、わざわざエクセルのシート別にデータを管理している事例をみました

確かに、エクセルだと罫線が入った表をきれいに作成できるので仕方ない部分もあります

ただPDFファイルを作成するためだけにデータを一元管理しないのはデメリットも大きいです

今回はPower Appsにてデータを一元管理しつつ、PDFファイルを「エクセルで作成したように」作成する方法を解説します

具体的にやりたい事

元データは下の画像のエクセル表になります

こちらをPower Appsでフィルターしながら、Galleryに表示します

合計金額は別途ラベルで計算しておきます

そして上記の内容をPDFで別途出力します

ポイント

Print関数

Power Appsにて、新しい画面をクリックすると「縦長で印刷」を選択できます

実際に「縦長で印刷」の画面を選択すると、「Print関数」が仕込まれた画面が設定されます

上の画像の「印刷」をクリックすると、PDFで画面を保存することができる画面に切り替わります

しかも「印刷」ボタン自体はPDF画面に反映されません

何故ならVisibleプロパティに以下の内容が仕込まれてるからです

ですので、戻るボタンを作成する場合には、印刷ボタンをコピーしてOnSelectプロパティを変えるか、Visibleプロパティを変えましょう!

CONCAT関数&HTML

前述のPrint関数でPower AppsからPDFファイルを作成する方法は解説しました

では、エクセルのような表形式はどのように行うのか?気になるところだと思います

こちらは、通常ではデータテーブル機能を使用する方法が一般的だとは思います

ところが、Power Appsのデータテーブルだとあまり「表」らしくありません

ですので、HTMLで表を作成します

表の可変行の箇所は、CONCAT関数を使うのも大きなポイントです

今回は、Galleryの内容をCONCAT関数で抽出します!

データ抽出画面の作成

前述のPrint関数はPDFを作成する出力画面で使用します

それとはまた別の画面を作成し、出力画面で使用するデータを抽出できるようにします

こちらは「具体的にやりたい事」で前述した内容ですので、割愛させて頂きます

HTML

今回の内容はPrint関数で出力するのもポイントなのですが、HTMLで出力するところが最大のポイントとなります

特に行数が可変になるGalleryの内容をCONCAT関数を通じてHTMLで表現するところが難所です

基本構文

専門的な事は、専門サイトの方をご参照して頂きたいのですが、基本的な内容だけは紹介したいと思います

今回使用したHTMLをメモ帳で添付したので、そちらを修正して使いまわすことも十分可能だと思います

構文は大きく分けて3つに分かれます

1.普遍的なHTMLの内容の宣言、2.テーブルの構造の指定、3.見出し・行列の内容の指定

1.の普遍的な内容(”<!DOCTYPE html>~<body>)についてはここでは割愛させて頂きます

2.のテーブルの構造の指定については以下のように指定します

<table border=1 cellspacing=0 cellpadding=10 width=700 table style=font-size:15pt;>

「tablre border=1~cellspacing=0」で一般的な罫線を指定しています

そして、widthで表の幅、font-sizeでフォントサイズを指定しています

3.の見出し・行列の内容の指定については、見出しから解説します

 <tr>     

<th width=25%>日付</th>

<th width=25%>商品</th>

<th width=25%>客先</th>

<th width=25%>売上金額</th>

</tr>

<tr>で始まり、</tr>で終了するのですが、<th>~</th>内に各見出しを指定します

widthは列幅の指定になります

次に一番肝心の行列の指定です

こちらは前述のようにCONCAT関数で指定します

引数は2つになるのですが、第一引数はGalleryの内容になります

Gallery1.AllItemsを第一引数にすることで第二引数内で、ThisRecordによりGalleryの内容をHTML内に抽出することができます

次に、行列の内容ですが、こちらは見た目は小難しそうですが、<tr>と<td>の出現位置に注目して頂くとかなりシンプルなのがお分かりいただけると思います

まず、<tr>で1行目が始まり、各列が<td>で始まります

ここで、ルールが1つあるのですが、</~>で終了します

繰り返しになりますが、<tr>と<td>の出現位置に注目すれば、かなりシンプルに行列が表現できます

それでは、

ここまでで基本的な内容が指定できたと思います

ここから応用ですが、空白行を追加します

空白行は「”&nbsp;”」で表現します

“<tr><td>” & “&nbsp;” & “</td><td>” & “&nbsp;” & “</td><td>” & “&nbsp;”& “</td><td>” & “&nbsp;”

更に合計行は「”&nbsp;”」を交えながら表現します

 & “</td><td>” & “&nbsp;” & “</td><td>” & “&nbsp;”& “</td><td align=right>” & Label_合計.Text &  “</table>

これで、表を更にエクセルライクにすることができました

注意点

注意点は2つあります

1つは、HTMLはラベル内に記述するのではない点です

記述は下の画像のHTMLテキスト内で行います

次に注意点の2点目です

記述するHTMLはあくまで文字列で指定します

ですので、”ではじまり”で終わります

途中でも「文字列」が成立するように”の位置と&の位置には注意する必要があります

上記の内容に注意すれば、エクセルライクな表をPDFファイル内に設定できるようになります

画像に alt 属性が指定されていません。ファイル名: image-11.png

<まとめ>

今回は、Power Appsにてエクセルのような表をPDFファイルで出力する方法について解説しました

今回の紹介した仕組みを有効活用すれば、エクセルの過度なシート別の使用も減らすことができます

尚、

今回はHTMLについては簡単な内容だけ紹介しました

ぜひ、専門的なサイトの内容も参考にして頂きたいと存じます

個人的には「SAMURAI ENGINEER BLOG」様を参考にさせて頂きました

https://www.sejuku.net/blog/49377

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村
にほんブログ村 IT技術ブログ VBAへ

コンテキスト遷移~DAXの何故こうなるのか?を解決する~

【このコンテキスト遷移の理解がDAX自体の理解の近道です】

DAXを使用していて「何故こうなるの?」ということに出会うことがあります

「何故こうなるの?」の不思議の一つが「コンテキスト遷移」です

早速、事例で見てみましょう

上の画像の2つの列は「大阪」で値が2300と1200と言う風に違いがあります

実際にメジャーの中身を見ると些細な違いしかありません

・MAXX_NoCal

  MAXX_NoCal = MAXX(‘担当者’,SUMX(‘売上’,’売上'[金額]))

・MAXX_withCal

  MAXX_withCal = MAXX(‘担当者’,CALCULATE(SUMX(‘売上’,’売上'[金額])))

MAXXの第二引数にCALCULATE関数があるかないかだけです

ところが、このCALCULATE関数のあるなしがとても大きいのです

CALCULATE関数があるメジャーは2300⇒1200となり、何らかの形でデータの絞り込み(フィルター)が行われています

今回の記事ではこの絞り込みが有効になる「コンテキスト遷移」の仕組みについて解説していきます

DAXで計算したいこと

今回は2つのテーブルを使用します

1つ目は担当者のテーブル、2つ目は売上テーブルです

売上テーブルは同一担当者が複数登場しています

DAXを使用して、この2つのテーブルを組み合わせて、東京と大阪で最大の売上をあげた担当者の金額を計算します

MAX関数での計算

「東京と大阪で最大の売上・・・」というように「最大」というキーワードが出てくるので、MAX関数を使用するのでは・と思った読者の方も多いと思います

では早速、MAX関数で計算してみましょう

MAX = MAX(‘売上'[金額])

そうすると上の画像のように、思ったよりも小さい金額算出されます

これはそもそも集計の単位が違っています

ですので、まずは担当者テーブルで新しい列を作成し、担当者別に売上金額を算出してみます

新しい列で担当者別の売上を算出した上で、MAX関数を使用してみます

これで意図とした通りの結果が出ました

ポイントは新しい列を作成する時、CALCULATE関数を使用していることです

画像に alt 属性が指定されていません。ファイル名: image-63.png

仮に、上の画像のCALCULATE関数を取り除いたらどうなるでしょうか?

全ての行の合計が算出されてしまいます

つまり、CALCULATE関数を使うことで遷移(全ての行⇒行別)が起こっているのです

MAXX関数/行評価

上のMAX関数の事例ではメジャーを作成するまえに、新しい列を作成しました

今度はMAXX関数を使用して、直接メジャーで担当者ごとの最高金額を大阪と東京で算出したいと思います

MAXX関数では単純に最大値を算出するのではなく、行別に式を評価した上で最大値を算出します

他の言葉で言い換えると、条件に合う「行の中」で最大値を算出してくれます

ちなみに、大阪と東京の合計金額は次の画像のようになっています

では、話を戻してMAXX関数を実際に使用して大阪と東京の担当者別の最大値を算出してみましょう

通常の合計金額と同じ結果になってしまっています

つまり、大阪もしくは東京という「行別」だけが考慮された計算金額になってしまっています

MAXX関数の第一引数はMAXX(’担当者’となっているのに「担当者の行別」は考慮されていません

これは、前に例に挙げた下の画像と同じ現象が起こっています

画像に alt 属性が指定されていません。ファイル名: image-65.png

この時はCALCULATE関数を使用して「行別への遷移」を起こしました

実は、今回も同じようにCALCULATE関数を使用すれば正しく算出されます

CALCULATE関数を使用することで、今回もMAXX関数内で「行別への遷移」を起こしているわけです

これで、DAXは何故こうなるのか?の謎が一つが解けたと思います

メジャー使用による行評価

番外編として、次の事例も紹介したいと思います

上の画像の一番右の式はCALCULATE関数を使用していません

MAXX_NoCal_withMEASURE = MAXX(‘担当者’,[売上合計])

その代わり、第二引数に[売上合計]というメジャーを使用しています

ですが、CALCULATE関数を使用したのと同じ結果がでています

これはメジャーを使うこと自体で、CALCULATE関数を使用するのと同等の効果があることを意味します

たとえメジャーの中身と同じ内容を関数の引数で使用しても、違う結果が出てしまうのはこの為です

<まとめ>

今回はCALCULATE関数を使用して、行別の評価を関数内で受け渡す「コンテキスト遷移」について解説しました

この概念を理解すると、格段にDAXの活用の幅が広がります

ぜひマスターしておきましょう!!

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power Queryに強くなる~M言語/コードに慣れましょう~ 第10回

【Power Queryはあくまでコードでできています。これが今回のポイントです】

Power Queryはとても便利です。メニューをクリック操作していくだけでかなりのことができます

但し、メニュー操作に慣れてしまうと、エラーが起こった時に対処方法が分からなかったりします

そして、もう一つ問題があります

Power Queryが登場してから数年が経ちました

他の方が作成したPower Queryをメンテナンスする機会も増えていくと思います

この時、コード自体を理解できないとメンテナンスは行いにくいです

ですので、これからはPower Queryで書かれているMコードを理解できることも重要になっていくと思います

私も他の方が作成したPower Queryを修正する仕事をしていますが、Mコードを直接理解できないと仕事になりません

今回の記事を通じて、Mコードに慣れる機会にして頂けると嬉しいです

但し、今回の記事ではMコードを書くことは意図していません

あくまで、Mコードを読めるように訓練していく必要性と、Mコードを読む勘所を掴んで頂きたいと思います

今回のポイント

Power QueryのMコードはStepが連なってできています

ここがM言語の最大のポイントです

しかも前後左右、Step間で整合性が取られています

このStepに慣れるとそのままM言語に慣れることができます

Stepの中身の確認

ここからは実際に同じように手を動かしてみて頂くと分かりやすいと思います

たとえば、以下の画像のような平均金額を計算したPower Queryがあるとします

もちろんStepは「ソース」からはじまっています

Stepの中身は2つの方法で見ることができます

一つは数式バーです

二つめは詳細エディターです

こちらはホームタブから見ることができます

詳細エディターをクリックするとコードを丸ごと見ることができます

コードの中身を見て頂くと前後、Stepがつながっているのが良くわかります

let
①ソース = Excel.CurrentWorkbook(){[Name=”売上データ”]}[Content],
②変更された型 = Table.TransformColumnTypes(①ソース,{{“日付”, type datetime}, {“客先”, type text}, {“商品”, type text}, {“売上金額”, Int64.Type}}),
③計算された平均 = List.Average(②変更された型[売上金額])
in
③計算された平均

Stepの意味合い

試しにこちらの数式の中身を「ソース」に変えてみます

画像に alt 属性が指定されていません。ファイル名: image-40.png

そうするとどうなるでしょう?

表示はソースStepの内容になります

つまり、Step名自体に意味があります

Step名そのものが「データテーブル」を意味します

よくあるエラー

ここからは実践的な内容として、よく起こるエラーと対策について紹介します

ソースの変更

ソースステップの数式を見てみましょう!

数式の中身は次のようになっています

= Excel.CurrentWorkbook(){[Name=”売上データ”]}[Content]

試しにデータソースとなっている「売上データ」を「売上データ2」に変えてみましょう!

すると次の画像のようなエラーが発生します

この手のエラーはよく発生します

この場合、元のテーブル名に戻すか次のように数式を変更します

そうすればエラーは解消されます

変更された型

今度はソースステップで列名を変更してみます

そうすると以下の画像のようなエラーがでます

こちらはよく起こるタイプのエラーです

ところで「変更された型」Stepとはなんでしょう?

= Table.TransformColumnTypes(#”名前が変更された列 “,{{“日付”, type datetime}, {“客先”, type text}, {“商品”, type text}, {“売上金額”, Int64.Type}})

この「変更された型」Stepでは、各列の形式を設定しています

ここで1つ前にStepも含めて「変更された型」Stepを見てみましょう!

①名前が変更された列 = Table.RenameColumns(ソース,{{“商品”, “商品2”}}),
変更された型 = Table.TransformColumnTypes(名前が変更された列,{{“日付”, type datetime}, {“客先”, type text}, {“商品”, type text}, {“売上金額”, Int64.Type}}),

①名前が変更された列Stepでは「商品」列を「商品2」列に列名を変更しています

次の①変更された型では「Table.TransformColumnTypes(名前が変更された列」となっているので、①の名前が変更された列のテーブルデータを引き継いでます

つまり、「商品2」の列名を持つテーブルデータを引き継いでます

でも、②変更された型Stepでは商品列を「type text」、文字列形式にしています

{“商品”, type text}

ということは、既に存在しない列名を文字列形式に変更しようとしています

ですので、前述のエラーメッセージが出るわけです

画像に alt 属性が指定されていません。ファイル名: image-49.png

ではどうやってエラーを解消したらいいでしょう?

一番シンプルなのは変更された型Stepを削除することです

これで、Step間の整合性が取れるからです

let
ソース = Excel.CurrentWorkbook(){[Name=”売上データ2″]}[Content],
名前が変更された列 = Table.RenameColumns(ソース,{{“商品”, “商品2”}}),
計算された平均 = List.Average(名前が変更された列[売上金額])
in
計算された平均

では、どうやって形式変更を行ったらいいでしょうか?

手動で各列を変更するか、すべての列を選択した上で「データ型の検出」を行います

ちなみに、「変更された型」の自動設定を解除したかったら、ファイルタブから「クエリのオプション」を選択します

次に開く画面で「データの読み込み」から「非構造化ソース・・・を検出しない」を設定しておきます

そうすれば、次から「変更された型」Stepは自動で設定されなくなります

<まとめ>

今回の記事では、M言語/コードに慣れるきっかけになるような事例を幾つか紹介させて頂きました

この記事だけで飛躍的にPower Queryの技術が向上するわけではないですが、コードに注目していけば継続的に技術が向上していくはずです

今回の記事は本当に触りだけですが、本格的にM言語を学びたい方はこちらの記事をぜひご利用ください

尚、Udemyで動画コース「Power Queryのメニューにはない裏技ができる! M関数を学んで使えるようになる講座」をリリースしています

期間限定ですが、無料クーポンを提供させて頂きますので、ぜひご利用ください!

終了したら、レビュー投稿の程よろしくお願いします!

今後の参考にさせて頂きます!!

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Uploadしたエクセルファイルを直接コレクションにする~Power Apps~

【エクセルファイルをSharepointリストなどを経由せず、直接Power Apps内で編集できるようにします】

エクセルファイルの内容をSharepointリストに反映する前に、一旦編集したいケースもあると思います

その場合、一旦Sharepointリストに反映してしまうと「削除」を行う必要がでてくるなど、やたらと時間がかかることがあります

今回はJSON形式を経由して、直接エクセルファイルの内容をPower Appsに取り込みます

記事の解説は大きく分けると、次の3つになります

・エクセルをPower Appsから始動して一旦、OneDriveに名前を変えて保存する

・エクセルファイルをJSON形式に変えてPower Appsに送信する

・Power AppsでJSON形式を通常のコレクションにする

上記のうち「エクセルをPower Appsから始動して一旦、OneDriveに名前を変えて保存する」については、お手数ですが過去の記事をご参照願います

前提条件

・Uploadするエクセルファイルの中身は最初からテーブル形式になっていること

*OfficeScriptでPower Automateのフロー内で自動的にテーブル形式にすることもできます⇒過去記事

・Uploadするエクセルファイルの列は固定であること

ファイルのアップロード及びPower Automateの起動

フォームのパーツを使用してファイルをUploadする方法は過去の記事を参照してください

今回はファイルのアップロードしてコレクションを作成するまでの間は「処理中」と表示します

この「処理中」を表示するためには、ボタンの「OnSelect」プロパティにてUpdateContext関数を組み込みます

UpdateContext関数で更新する変数はラベルのVisibleプロパティに組み込んでおきます

そして、Power Automateフローを起動する時には変数:myflowで受け取れるようにします

UpdateContext({myflow: 

             エクセルインポート.Run(

                                         {

                                         contentBytes: First(DataCardValue.Attachments).Value,                                                              

             name: First(DataCardValue.Attachments).Name

                                    }

              )

});

Power Automate内でのJSON形式への変換

ファイルの作成

Power Automateフロー内ではPower Appsから受け取ったファイルの内容を基にして、まずはOneDrive内に新たなファイルを作成します

作成されるファイル名は過去に作成したものと同じにならないように、現在時刻をファイル名に入れます

*OneDrive内では作成したファイルを削除したり、ファイル自体を上書き更新するには一定期間を空けなくてはなりません。その為、このような処理を行います

JSON形式への変更

選択アクション

UploadしたエクセルファイルをJSON形式に変換するには、データ操作コネクタの選択アクションを使用します

「表内に存在する行を一覧表示」アクションで読み込んだ内容を「選択」アクションでJSON形式に当てはめていきます

この時に「日時」と「数値」形式の内容については、関数を使用してきちんと該当の形式に変換しておきます

・日時形式 ⇒例:formatDateTime(item()[‘Date’],’yyyy/MM/dd’)

・数値 ⇒例:int(item()?[‘Sales’])

注意

「選択」アクション内で、うまく動的コンテンツでエクセルの内容を拾えないことがあります

この時は2つ対応方法があります

・動的コンテンツの工夫

通常「表内に存在する行を一覧表示」アクション内では下の画像のように、ファイルの指定内容は動的コンテンツにて指定します

選択アクションにて動的コンテンツを使用するまでは「パス」ではなく、実際のファイルパスを指定しておきます

選択アクション内で動的コンテンツを設定したら、元通り「パス」を設定し直しておきます

・式での指定

一度、コードのプレビューを見てみましょう

上の画像を見ると、開始の「value」で処理する内容は<item()?[‘列の中身’]>で抽出できることがわかります

実際に<item()?[‘列の中身’]>を使用する時は、下の画像のように「式」の中で@を入れないことも大きなポイントです

JSONの解析

JSONの形式変更の最後では「JSONの解析」アクションを使用します

スキーマは「サンプルから生成」から作成しますが、こちらは一旦「””」で設定してフローを動かして設定します

*あまりUploadするファイルの行数が多いと取得できませんので、その場合は行数が少ないサンプルファイルを使用します

フロー動かした後の出力結果をコピーし、どこかメモ帳にでもコピーしておきます

その後、サンプルから生成をクリックし、次に表示される画面にコピーしてスキーマを作成します

Power Appsへの受け渡し

作成したJSONはPower Appsに受け渡します

上の画像では「msg」としてPower Appsに受け渡しますが、Power Apps内ではそのまま「msg」では抽出できませんので注意が必要です

Power Apps内でのコレクションの作成

Power Automateから受け取ったJSONの内容は、次の画像のようになっています

コンテキスト変数内で更に「msg」を経由することで「JSONの内容」を抽出できるようになっています

このJSONからコレクションを作成するには、2つの関数を使用します

ParseJSON関数」と「ForAll関数」です

最初のParseJSON関数では、受け取ったJSON形式の内容を解析します

解析した内容には形式がありませんので、次の画像のようにTable関数でTable形式にします

Table(ParseJSON(myflow.msg))

Table関数で作成したテーブルの内容は、ForAll関数でコレクションにします

ここで注意点です

ParseJSONで解析した内容はValueで抽出します

しかも、Valueで抽出しても形式が無いので、次のようにText関数やValue関数で形式を付与します

 {  

              Product:Text(Value.Product),  

              Date:Text( Value.Date),  

              Customer:Text( Value.Customer),  

              Sales: Value(Value.Sales)   

 }

ここで、JSON形式をコレクションにする内容を全てみてみましょう

 Clear(myJson);

ForAll(

        Table(ParseJSON(myflow.msg)),

          Collect(

                    myJson,

                    {

                      Product:Text(Value.Product),

                      Date:Text( Value.Date),

                      Customer:Text( Value.Customer),

                     Sales: Value(Value.Sales)

                   }

        )

)

 まず最初に作成するコレクション:myJSONをクリアしておきます

その後に、前述のようにParseJSON関数で解析しながら、JSONの内容を全てコレクションにします

<まとめ>

今回はエクセルファイルをアップロードしてコレクションにする方法を解説しました

具体的な内容としては①エクセル⇒JSON、②JSON⇒コレクションというように2段階で変換を行うので少し重い内容となっています

但し、意外と躓きやすい箇所が他にあります

「表内に存在する行を一覧表示」のアクションです

既存の設定だと2つ注意点があります

1.出力される行数が256行に限定される

こちらは設定を変えておきましょう!

上の画像の設定をクリックすると次の画面が開きます

こちらで「しきい値」を変えると出力する行数の上限を引き上げられます

2.DateTime形式

こちらは「ISO 8601」にしておかないと、日付形式の箇所はエラーになります

「ISO 8601」の他に「Serial Number」というのもありますが、その場合は日付形式の内容を設定するには「addDays関数」を使用します

こちらについては後日、別途詳細な記事を書きたいと思います

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power Automate Desktopでメールに表を入れて送る方法

【HTMLを使用して、とにかく手っ取り早く表をメールの中に入れて送ります】

添付のメールだと見てもらえるかわからないので、メールの中に表を入れて送るケースも結構あるようですね

但し、これはエクセルの表を貼り付けるなどの手間があるので、すごく面倒です

RPAで送るにしても、貼り付けだと安定性があるとは言えません

ですので、Power Automate Desktopで表をメールに入れるHTMLコードを自動で作成してメールを送ってしまおうというのが今回の趣旨です

メールで送る表

今回メールで送る表はエクセルで作成します

行数は可変という想定です

但し、列数は固定という想定になります

表を入れるHTMLコード

下が表をメールに入れるHTMLコードは以下のようになります

     <table border="1">
            <tr>
                <td>部門</td>
                <td>売上</td>
            </tr>
            <tr>
                <td>1行目部門</td>
                <td>1行目部門</td>
            </tr>
        </table>

これを見ても、HTMLコードを見たことが無い読者の方からすると、何のことか分からない・・・という風になるかもしれません

但し、<tr>x</tr>という「/」を介した組み合わせと、<tr></tr>の間に挟む内容が1行を表していることに注目して頂くと分かりやすいと思います

つまり、一旦、見出しを最初に<td></td>を介しながら設定した後は、エクセルの最終行まで読込処理を繰り返しながら<tr></tr>の間に読込内容を組み込んでいきます

なお、表を罫線で囲むには<table border・・・と表現します

使用するアクション

主に「テキストに行を追加」アクションを使うとフローが分かりやすくなると思います

追加した後は変数:Result(上の画像の場合)に格納するのですが、下の画像のような形にすると前述のHTMLコードが作られていく様子がイメージしやすいと思います

もちろん、こちらの変数:Resultはメールの本文に入れて送ります

繰り返し処理

まずは「テキストに行を追加」を使用して、表の見出し部分を作成します

その後は繰り返し処理を行列双方向で行い、表の中身を追加してきます

この時、行方向の繰り返し処理は最終行まで行うようにします

そして、1行の処理の開始及び終了時には<tr>と</tr>を追加します

開始
終了

表の中身を追加する際には<td></td>を組み合わせます

表の中身を追加し、繰り返し処理が終了した後は</table>を組み入れます

メールの送信

メールの送信時は、HTMLコードを設定した変数を組み込みます

そして、ここが最後のポイントですが、下の画像の「本文はHTMLです」をオンにしましょう

これで行数可変でメールの中に表を入れて送ることができます

<まとめ>

今回は手っ取り早く、コードを使用してメールの中に表を入れて送る方法を解説しました

今回紹介した内容では、罫線の形は下の画像の形でしか送れません

ぜひ、HTMLを解説する他サイトなどを参照して、罫線の形はご自身の好みに合うように変えてみてください

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

ファイルのアップロードを行えるようにするアプリ作成~Power Apps~

【どうしても煩雑になりがちなファイルの管理をPower Appsで行いましょう!】

今回の記事では、Power AppsからSharepointサイトのドキュメントにファイルをアップロードするアプリを作成します

このアプリを使用することで、ファイルの保存場所を管理しやすくなります

また、手間なファイルのアップロードの処理を簡略化できます

アプリ作成はそんなに手間暇かかりません

ただし注意点がが幾つかあります

記事の中でそちらについては明記してありますので、都度ご確認の程よろしくお願いします

ポイント

今回のアプリはPower Automateのフローと連携します

添付ファイルの内容をPower AppsからPower Automateフローに渡します

Power Automateフローでは、Power Appsから受けとった添付ファイルの内容を基にして指定Sharepointサイトのドキュメントにファイルを作成します

このファイルの受け渡し方が少々、とっつきにくいです

ファイルを添付する仕組みの作成~Power Apps~

最初にPower Appsでスクリーンを2つ用意します

そのうちの1つのスクリーンでフォームを作成します

フォームのデータソースは何でも構いません

欲しいのは「添付ファイル」のパーツです

下の画像のパーツを切り取り、別のスクリーンに貼ります

別のスクリーンにパーツを貼り付けた後は、元のスクリーンは削除しましょう

次に貼り付けたパーツのプロパティを以下のように設定します

・Items ⇒Blank()
・DisplayMode ⇒DisplayMode.Edit               ・MaxAttachments ⇒1

*パーツには扱いやすい名前を付けましょう!

ファイル作成をするフローの作成~Power Automate~

トリガー

ここからPower Automateフローを作成します

トリガーはPower Appsからファイルの中身を受け取れるように「ファイルコンテンツ」を指定します

ここで重要な注意点があります

必ず3点リーダーから「フィールドを必須にします」を指定しておきます

この設定が抜けるとうまく行きませんので確実に指定しましょう!

ファイル作成

次にファイル作成アクションを作成します

サイトのアドレスとフォルダーのパスには、ファイルの保管先を指定します

問題は次からです

まずファイル名です

こちらはそのまま以下をコピーしてください

triggerBody()[‘file’][‘name’]

コピー先は下の画像の「」の箇所ですので、間違いがないように注意をお願いします

コピー後は下のOKボタンを押します

すると以下のようになります

OKボタンを押した瞬間は上の画像のように、ファイル名が関数の表示になっています

こちらはフローを実行後は表示が変わるようになっています

画像に alt 属性が指定されていません。ファイル名: image-34.png

最後にファイルコンテンツを指定します

こちらはトリガーで受け取った内容を動的コンテンツから指定します

仕上げ~Power Apps~

それでは最後にPower Appsを仕上げます

Power Automateフローを動かすボタンを作成します

こちらのボタンでは、Power Automateフローに添付ファイルの内容を渡せるようにします

添付ファイルの内容は2つあります

こちらの2つの内容の渡し方が少し癖があります

下のように{}を使用します

UploadFile_Ver1.Run(   

     {     

      ①contentBytes:First( AttachmentFile.Attachments).Value,     

      ②name:First( AttachmentFile.Attachments).Name   

}

)

上記の①②の中身ですが、下の画像の名前を使用します

①contentBytes:First( AttachmentFile.Attachments).Value

②name:First( AttachmentFile.Attachments).Name

こちらの内容については、上記の内容をそのままコピーし、パーツ名だけを変更することをおすすめします

これで指定した箇所に、Power Appsを通じてファイルを保管できるようになります

<まとめ>

今回はPower Appsを通じてファイルを指定箇所にアップロードできるようにしました

そんなにアプリ作成には時間がかからないはずですが、何点か注意点があります

・Power Automate ⇒トリガーで必ず「必須」を指定する

・Power Automate ⇒ファイル作成アクションでファイル名を記事のコピーで作成する

・Power Apps ⇒Power Automateにファイル内容を渡す際、{}を使用して2つ引数を指定する

そのままアップロードしたエクセルファイルの内容をPower Apps内で使用する場合には、テーブルを事前に作成しておけば大丈夫です!

これでファイルの管理も楽になります

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

フォームに追加、編集、登録ボタンを設定する~Gallery連携~

【DisplayModeを使いこなして、表示が可変のプロっぽいボタン作成を行う】

Power Appsのフォームにはなかなか奥深い機能があります

何回かに分けてフォーム機能について記事を書いていきたいと思います

今回やりたいことはフォームに追加、編集、登録ボタンを設定することです

新規にデータを追加したいときは登録ボタンのみが表示されます

データを編集したい時には編集ボタンのみが表示されます

但し、編集ボタンを押すと登録ボタンのみが表示されます

上記の機能を作成するには、Display.Mode属性が特に重要になります

ポイント

今回はGalleryとフォーム(以降、Form)の連携の中で機能を追加します

*Gallery:名称/Gallery_Sales、Form:名称/Form_Sales

GalleryがあるページからFormのあるページに移動する時などに、Formの表示モード/DisplayMode切り分けることがとても重要になります

View:表示のみ

New:新規

Edit:編集

FormのDefultModeは「FormMode.New」を設定しておきます

ですので、+の追加ボタンを押したときにはFormのDisplayModeは各フォームコントロールに値がない新規モードになります

Galleryからレコード/行を選択したい場合は「FormMode」を「View」にします

登録ボタンの作成

こちらはOnSelectプロパティに定番のSubmitForm関数を設定します

但し、Visibleプロパティを工夫します

Formを閲覧するだけのViewモード以外の時に表示されるようにします

この時、数式内のIF式は省略できます

Form_Sales.DisplayMode<>DisplayMode.View

追加ボタンの作成

追加ボタンの機能はGalleryがあるページから移動するだけでなく、Fomをリセットします

ResetForm(Form_Sales);Navigate(Screen2)

編集ボタンの作成

編集ボタンの作成ですが、その前にGalleryとFormのItemプロパティに追加が必要です

GalleryからFormに表示するレコードを選択する際に、ViewForm関数を設定し、FormのDisplayModeを閲覧のみのViewに設定できるようにします

ViewForm(Form_Sales);Navigate(Screen2)

そして、編集ボタンはFormがViewモードの時のみ表示されるようにVisibleプロパティを設定します

Form_Sales.DisplayMode=DisplayMode.View

更に、編集ボタンのOnSelectプロパティにて、FormのDisplayModeを編集/Editモードに変更できるようにします

EditForm(Form_Sales)

これで追加や編集時にボタンが必要な時に表示されるようになります

<まとめ>

今回はFormに追加や編集ボタンを設定できるようにしました

Formの表示モードがとても重要になります

登録ボタン:FormのDisplayModeがView以外の時のみ表示

*Formを閲覧する時は登録ボタン不要

編集ボタン:FormのDisplayModeがViewの時のみ表示 

⇒OnSelectプロパティにはEditFormを設定⇒登録ボタン表示

少しややこしいですが、整理しながら設定すると必要な時に必要なボタンのみが表示されるようになります

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

脱エクセルについて考える~資金繰り表をPower Platformで作成~第9回

【エクセルは本当に便利なツール。但し、効率と効果を上げるには限界があります】

資金繰り表はエクセルに向いている業務の典型です

それは何故か?

上の画像の黄色のセルには数式が入っており、預金残高の予想残高を計算しています

但し、この数式を必要に応じて実際の預金残高「数値」で上書きすることができます

実はこれってエクセル以外のソフトだと難しいんです

「数式」と「数値」を共存できるエクセルは本当に便利なんです

ではエクセルで業務を続けていたらそれでいいのか?

それはそれで問題があります

下の画像の「2023/1/5」の売上高の欄には120と入っています

入力数字は120でも、実は120という数字を別な表で複数の顧客の数字を積み上げて入力されているかもしれません

それに、表に存在する日付/列単位が膨大になってくると、入力箇所を見つけるのも面倒です

つまり量が膨大になってくると、この資金繰り表の1セルを入力する作業がかなり面倒になってきます

その理由は一般的なエクセルの資金繰り表では「データ蓄積」「作業」「計算」「表示」が分かれていないからです

ですので、作業や計算スペースを作る関係上、データの並びが不規則になってしまったりしますし、入力しやすいようなスペースを作ることも困難です

更に言えば、資金繰り表のシートのデータを活用して他のシートで別の目的の表を作成しようとするとかなり複雑なものになってしまいます

実は、Power BIのDAXを使用すれば預金口座の残高も、実残高と予想残高を共存させながら計算できます

今回の記事ではPower BIPower Appsを使用して、エクセルの資金繰り表の「データ蓄積」「作業」「計算」「表示」を分けて管理できる仕組みの概要を紹介します

そして、Power Platformの便利さに触れて頂けたら幸いです

ポイント

Power Platformを使って資金繰り表を作成するには、分解が結合がポイントです

データの分解・結合

預金残高は数式と数値を共存できるように、以下にデータを分けて管理します

・預金残高(実残高)

・入金

・出金

更にカレンダーテーブル

上記の4つをDAXで結合して使用します

今回はSharepointリストを使用します

入出力と表示の分解

今回は入出力はPower Appsで行います

Power Appsならページを分けて、売掛金や経費などの入出力専用ページを作成できます

そして、表示や主な計算はPower BIで行います

Power BIは集約計算の簡単にできるし、DAXで複雑な計算も行えますので、Power BIの機能もフル活用します

エクセルで日付毎に複数の顧客の売掛金を合計していた作業は、前述のテーブルを作成しておけば勝手にPower BIが行ってくれます

入出力と表示が分かれていると不便だろうという場合は、後述するPower BI内でPower Appsを使う方法もあります

預金残高を表示するDAXの作成

ここがエクセルの資金繰り表を他のソフトで行う最大の難所です

日付の管理がとても重要です

・実際に預金残高を入力した日付の残高⇒そのまま残高を表示

・預金残高を入力していない日付の残高⇒実際に預金口座を入力した日付以降の入出金を加味して計算

例えば、1月1日の残高が100、1月2日の入金が100、1月3日の出金が100だったとします

この場合は

1月1日残高⇒100/実績残高

1月2日残高⇒200(100+100)/予想残高

1月3日残高⇒100(100+100ー100)/予想残高

となります

こちらを実際にDAX式に直したのが以下です

*CashBalance:実際の預金残高、Receipt:入金、Disbursement:出金

預金残高 =  

VAR currentDay=MAX(‘Calendar'[Date]) 

VAR maxDay=CALCULATE(MAX(‘CashBalance'[Date]),FILTER(All(CashBalance),’CashBalance'[Date]<=currentDay)) 

VAR cashAmount=SUMX(FILTER(ALL(‘CashBalance’),’CashBalance'[Date]=maxDay),’CashBalance'[CashBalance]) 

VAR cashReceipt=CALCULATE(SUM(‘Receipt'[Amount]),FILTER(All(‘Receipt’),’Receipt'[Date]>maxDay &&’Receipt'[Date]<=currentDay)) 

VAR CashDisbursement=CALCULATE(SUM(‘Disbursement'[Amount]),FILTER(All(‘Disbursement’),’Disbursement'[Date]>maxDay &&’Disbursement'[Date]<=currentDay))

RETURN cashAmount+cashReceipt-cashDisbursement

今回の記事では詳細には解説を行いませんが、一見複雑なこの式の最大のポイントは「預金残高の最大日付:maxDay」を算出することです

冒頭のたとえを使って説明すると、今日が1月3日だとしたらその前に預金残高がテーブル:CashBalanceに貴重された日付の1月1日を算出するということになります

最大日付が算出できれば、おのずと入金金額を算出する期間と出金金額を算出する期間が求まります

ただ実際には、フィルターを意識してAll関数をうまく組み合わせていく必要があります

専用アプリによる預金残高表示

Power BIには様々なアプリ/ビジュアルがあります

今回は資金繰り表に活用できるビジュアルを1つ紹介します

その他のビジュアルの取得をクリックして「Calendar」と検索してください

すると「Beyondsoft Calendar」というビジュアルをダウンロードできます

こちらのビジュアルは日々の預金残高をカレンダー上で表示できるという優れものです

残高の状態によって色を変えたりもできます

エクセルではなくPower BIを使用することで、専用アプリを活用することもできるんです

Power BIとPower Appsの連携

Power AppsをPower BI内で使用したい場合は、こちらをクリックするところからはじめます

すると、Power Appsに使用するフィールドの入力ができるようになります

実は、こちらはなんでも構わないんです。取り合えば何か設定すればPower BI内で表示したいPower Appsのアプリを選択できるようになります

<まとめ>

今回は脱エクセルについて考えると称して、エクセルの資金繰り表をPower AppsとPower BIを連携させて作成する方法の概要を紹介しました

紹介したのはあくまで概要ですが、エクセル作業が改善されていく可能性を感じて頂けたら幸いです

現実に、エクセルは表計算ソフトですので大量のデータを処理するには向いていません

なので、Power PlatFormの仕組みを利用して「データ蓄積」「作業」「計算」「表示」を分解・結合できるようにすることはとても意義があります

そうは言っても、誰でも手軽に使えるエクセルと違ってPower BIのDAXなどが複雑であったりするので専門知識が必要です

それに当然、手間暇も必要です

ですので、最終的にはどの程度の量の業務をどんな風に変えたいかが一番のポイントなのかもしれませんね

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ