Excel操作(関数(範囲)の結果取得)を作ってみた
Excelで「=MAX(A1:E10)」みたいな、引数に範囲を取る関数の処理結果を、変数に取得するライブラリを作ってみました。
勝手に命名
Excel操作(関数(範囲)の結果取得)
きっかけのスレッド
ベースライブラリ
Excel操作(範囲選択)
加工箇所
' メイン処理をコメントアウト
'worksheet.range(range).Select'次の行に以下を追加
' 関数の選択肢を設定画面に表示
fnc = !関数|MAX,MIN,SUM,COUNTA,COUNT,COUNTBLANK,AVERAGE,CONCAT!' 関数の追加方法
' 関数の選択肢と処理をセットで追加
' 最下部のリファレンス、mougのサンプル1内、MAXと差し替えて動く関数に対応' 選択肢に応じた処理を適用
Select Case fnc
'最大値
Case "MAX"
result = xlsApp.MAX(worksheet.range(range))
'最小値
Case "MIN"
result = xlsApp.MIN(worksheet.range(range))
'数値の合計
Case "SUM"
result = xlsApp.SUM(worksheet.range(range))
'データの個数
Case "COUNTA"
result = xlsApp.COUNTA(worksheet.range(range))
'数値や日付、時刻の個数
Case "COUNT"
result = xlsApp.COUNT(worksheet.range(range))
'空白セルの個数
Case "COUNTBLANK"
result = xlsApp.COUNTBLANK(worksheet.range(range))
'数値の平均値
Case "AVERAGE"
result = xlsApp.AVERAGE(worksheet.range(range))
'文字列の連結
Case "CONCAT"
result = xlsApp.CONCAT(worksheet.range(range))
End Select' 関数の処理結果を変数に格納
SetUMSVariable $結果$ , result
- 長々と書いているものの、実質この2行のみ
xlsApp.MAX(worksheet.range(range))
SetUMSVariable $結果$ , result
- この関数部分MAXだけを差し替える術はないものか、、
リファレンス
ワークシート関数をVBAで使用する(WorksheetFunctionプロパティ):Excel VBA|即効テクニック|Excel VBAを学ぶならmoug
https://www.moug.net/tech/exvba/0100035.html
WorksheetFunction(ワークシート関数を使う)|VBA入門
https://excel-ubara.com/excelvba1/EXCELVBA387.html
ワークシートの関数を使う(WorksheetFunction)|VBA再入門
https://excel-ubara.com/excelvba1r/EXCELVBA510.html
Excel関数 機能別一覧(全486関数) | できるネット
https://dekiru.net/article/4429/
以下、更なる機能拡張の妄想です。
範囲に加えて引数を指定する関数への対応
- 関数(範囲,引数)
1つならすぐに手が届きそう - 関数(範囲,引数1,引数2)
いくつまで対応するか、、きりがない、、
「関数(範囲や引数)」をまるまる指定
- Excelで使う数式をそのまま指定すれば良い状態
- ◎ 万能になり得る
- 早くも命名案:Excel操作(数式の結果取得)
- ▲ 既成ライブラリのスクリプトパターンに沿う限り、RANGEとかのオブジェクトは手前で宣言が必要だったりする
- ▲ 範囲をn回使う関数とかのバリエーションを網羅するのは難しいか
- IF,COUNTIF,VLOOKUP,INDEX,MATCH,FILTER,UNIQUEあたりが使えたら、、
- ! 逆に言うと、オブジェクトさえ克服すれば、万能を目指せそう
- ! 既成ライブラリのスクリプトパターンに沿わず、ゼロベースのスクリプトなら、、
- このへんに沿えばゴールできそうな気もする
VBSでExcelを操作(Excel の ウィンド を開かずに)- 初めてでも簡単 - VBScript初級
https://easyvbs.hatenablog.com/entry/2019/01/31/225040
Microsoft(R) VBScript ランゲージ リファレンス
http://yasusigi.net/iasdocs/aspdocs/ref/vbs/vbscript/55.htm
WSHでExcelシートの最大行数を知るには?| OKWAVE
https://okwave.jp/qa/q5623988.html
- シート名やセル(範囲)は、値を差し替えて使い回せるようにしたい
- 結果が変数に格納される価値の評価がモチベーション
- 自分の業務でニーズがあったら、もしくは質問に誘惑されたら挑んでみたい
- 誰かが颯爽と「できたよ」とシェアしてくれたら、それはそれで嬉しい