Excel VBA 質問スレ Part81
>>1 乙
Excelの「データ モデル」って、Accessから読めたっけ?
Accessでデータ解析する気は起きなかったので、やったことない。
DBにしているExcelのBook内「データ モデル」の中身は、
他のExcel Bookからですら参照できない。
ワークシートに読み込んだクエリー、テーブルなら他Bookから参照できるけど、
104万行まで。
なので、「データ モデル」は自Book内で分析するとかの利用に限られるのでは?
Excelの「データ モデル」は、
・ワークシート表示上限の104万行以上格納できる。
・複数のテーブルを、キーとなる項目を使ってリレーションシップで紐付けられる。 >>5
excelのデータモデルと言ってもDBでは当たり前のリレーションと変わらないと思う
もちろんAccessでもリレーション指定できる
>ワークシート表示上限の104万行以上格納できる
それは外部のAccessテーブル等に格納されてるレコード数がそうであるだけですね
その外部のレコードを参照するだけならいいけど、追加、更新しようとするとスゲー面倒かと
Access上で作れば追加、更新、削除に対応したフォームも簡単に作れる
これらの操作に当たり前にトランザクションも使える
やらなくてもいい苦労をしてるだけかと
DBに相応しいことはDBで、excelに相応しいことはそちらで、美味しいとこをそれぞれ使えばいい >>7
いちいち見に行くの面倒なんで、必要な分まとめて貼り直して(ついでに過不足修正とか)くれても私は怒りません
QとAもこのスレに纏まると思いますし
(私が答えられるとは言ってない) 昔のファイルのコードを見ているとWorksheet(BASE_SHEET_1)って記述があるけど
BACE_SHEET_1って名前のシートはない
動かしてみるとSheet1を参照している
昔はこういう書き方してたの? ごめん、全体を読んだら
Public Constで使われてました >>7
(寝る前に少し。分析機器のやつかわからんのだけど)
現状やってるのは、例えば前日分の分析データのみを取り出してそれぞれ振り分けて保存する
だけに見える。これだけだとスゲーシステムにはなり得ない、なりようがない
例えば飲料メーカーで飲料別に分析した値のデータで何かできないか、とか
別の見方として分析機器の故障の予兆を予想したいとか
このような具体的に想像しやすい代替要素にも絡めてほしい
ジュースやミルクとかのような多くのメーカーあるならそのものズバリで構わない
どこでも必ずやってるから
今の情報だけだと、助言できても大したことにはならないかと 「分析」となったら、
1. まず、時間軸とか商品別とかでの実績グラフ(累積、最大/最小、平均、中央値程度の基本的な統計的数値も含む)
2. 商品や地区とか時間単位での比較グラフ
3. 外の要因を探るための、天候や人口、交通量などのデータとのリレーション
4. 傾向をみるための、ヒストグラムやアウトプットの高い順に並べ替えた持続曲線グラフ
5. 外れ値を検出するために1.に重ね合わせる、箱ひげ図や標準偏差±σ、±2σ、±3σのレンジグラフ
6. 仮説の「要因」とアウトプットの関係を見る相関グラフ
7. 相関の強さを見たり、シミュレーションや将来を予測するための回帰分析
・・・思いつくだけでこんな感じか >>9
BASE_SHEET_1 と BACE_SHEET_1 は違うぞ >>13
素晴らしい
5などは一般的ではないがハマるとこではすごい役立つ
半バレするので置き換えて例示すると
ノイズにしか見えない平時の地震系の秒単位の数値推移を箱ひげ図にすると、昨日と今日のざっくり差が見い出せたりすることもある
これ導入して楽になったし品質も上がったしでメチャ役に立った 箱ひげ図は、データを何かに活かす意味では、
もっと使われて良いと思う。
Visualize statistics with Histogram, Pareto and Box and Whisker charts
https://www.microsoft.com/en-us/microsoft-365/blog/2015/08/18/visualize-statistics-with-histogram-pareto-and-box-and-whisker-charts/
("How statistics are used in Box and Whisker"のくだり。自動翻訳でも充分わかる)
統計実務におけるレンジチェックのための外れ値検出方法
https://www.stat.go.jp/training/2kenkyu/ihou/72/pdf/2-2-723.pdf
箱ひげ図はExcelグラフのナビゲート頼りに作るより、
ワークシート関数で中央値、四分位範囲を出せるから、
手が込んでも差分を取って、積み上げ棒グラフで作った方が
後々で色々弄れる。
(ひげの部分:エラーバーはExcelの箱ひげ図機能を使うけど)
Excelによる箱ひげ図の作り方(棒グラフ編)
https://bellcurve.jp/statistics/blog/15348.html
応用で、中央値と四分位範囲から平均値と標準偏差±σに変更することもできるが、
グラフナビゲートでは、±2σ、±3σの設定はできなかったような・・・ また、系列が255個までしか設定出来ないのは、
Excelの泣き所。
ヒストグラムや散布図といった統計グラフを
集計が速くて期間変更などのフィルタリングが簡単な
ピボットテーブルからは作れないのも。
例えば日最高気温を月系列でプロットしても、
255ヶ月分=21年とちょっとしか載せられない。
AccessやVBAは、あくまでデータを揃えるところまで。
何だったらPowerQueryと組み合わせても。
が、ここまで脱線・・・というか深掘りしようとすると、
いよいよPythonやRの出番かも?
と思ってる。 >>17
標準偏差はその言葉時点で拒否反応かもしれんけど、一部で増えてる投資のボリンジャーバンドってとこから入っていける人もいると思う
これ最初見たときは微妙だったけど、解説見てなるほどって活用してる
言葉でなくて何かしら色々サンプル見てたら閃くこともある 標準偏差って「偏差値」に繋がって、拒否反応示すかもしれないけれど、
何のことはない、「平均値からどのくらい離れているかの『平均』」みたいなもの。
ただ、離れている距離を計測するのに、
引き算の順番で正負数に分かれてしまうので、差を二乗にしたり、
その平均もどきを出すために平方根にしたりしている。
ミソは、ある事象が仮に「左右対称のきれいな山なり」の正規分布で起こっているとしたら、
・±σの範囲は68.3%
・±2σの範囲は95.4%
・±3σの範囲は99.7%
が収まるということ。
箱ひげ図の外れ値判定は、
ジョン・テューキーとかいうおっちゃんが前世紀に考えた、
"Tukey industry standard"がベースらしく、
中央値をベースに実績の順位で25~75%の範囲の1.5倍で足切りするので、
リクツが全く違う模様。
1.5倍をいろいろ弄るケースもある。
ただし、物事が起こる事象は「きれいな山なり」になるとは限らない。
例えば、年間での「風速」の分布は、無風の頻度が圧倒的に多くて
正規分布とは別の確率分布モデル(ワイブル分布だったか?)が必要らしい。 前スレからの俺だけどこの流れはうーん違うね
VBAでそんな分析だの統計データから算出だのしたいわけじゃないのよね
そんなものは分析機器がやっててそれを終えたデータを出すの
ぶわーっとそのデータを振り分けたいのよ
excelで計算は特にさせなくてよいのさ 桁の制御をFormat関数であとは平均を出す事くらいかなさせるのは
データをどう分岐させて振り分けるかで悩んでる
野望だけはかーなりでかいけどまだ勉強して覚えんといかん
あとパワークエリも脳から削除した
VBAだけで確実に出来るしやる VB6みたいにフォーム何枚も使ってると、ときどき実行中にフォームが行方不明になるな さてかーなりでかい野望に向けて土日で少し構想練るか
AIに代わる時代がはよきて欲しいわ
ユーザーフォームをいかにカッコ良く使いやすく作るかが真骨頂だよな >>25
まだ野望とか勘違いしてんのかよ
進歩すること拒絶したんだから、振り分け程度の初心者システムでつつましくIT土方しときなさい
それがあなたに相応しい ちよっと構想がまとまったかな
とりあえずざっくり叩き台作ってくか
別件で動画編集もせなあかんけどVBAのが道のりが遠い
早くAIが進化して仕事を楽にしてほしいもんよ 例の日本語ワープロが使えることが自慢だった零細企業の馬鹿かな そんなのが未だにいるんだな
転職も選択肢に入れるといいぞ
かなり面白い夢をこっそり企んでたけど構想が現実味を帯びてきたわ
こりゃパワークエリ不要だった >>28
自己承認欲求が強いだけの無能な老害は消えろや 仕事さきからもらったエクセルファイルに
=_txc2(D3)
みたいな文字列計算するぽい関数入ってたんだけどマクロファイルついてきてなかったんで
似たようなマクロ_txc2()を作ろうとしたんだけど_始まりの命名できなくて詰みました
この_はなんなんですか アドインとかかな…
VBEでF2、オブジェクトブラウザで検索したらどうだろ 「名前の管理」で定義されてない?
Lambda関数て作ってる可能性が。 >>32
VBAでなければ前にアンダーバーが付いているのはスコープがモジュール内の変数を指すことが多いよ。
VBAの場合、変数宣言の接頭にアンダーバーを付けるとコンパイルエラーになるので、自分の場合はアンダーバーの前にモジュールを表す意味で「m」をくっつけてる。 VB(VBA)の慣習では、アンダーバー始まりは非表示のメンバー
オブジェクトブラウザで非表示のメンバ表示させると結構ある
ただ、VBAでは定義できないっぽいな AccessはVBAコードの表示ができなくなるファイル拡張子「.accde」があるのに
Excelには同じようなファイル形式がなぜないのか? どこのサイトでも高値で取引されてるな
ざっと見たところ、ネットに無料で転がってる情報しか載ってなさそうなのに
なんだろ a = -2 と b = 3から符号を格納した2x2の配列を作りたいんだけど、
リテラルで書くとできる。(m0)
変数を埋め込んで書くと出来ないというかエラーもしてしまう。
どうすればいいわけ?
m2は「エラー 2029」になるんだが。
----以下コード
a = -2
b = 3
m0 = [{-1,0;0,1}]
txt_mtx = "{" & a / Abs(a) & ",0;0," & b / Abs(b) & "}"
m1 = [txt_mtx]
m2 = ["{" & a / Abs(a) & ",0;0," & b / Abs(b) & "}"] >>50
出来ました
m2 = Evaluate("{" & Sgn(a) & ",0;0," & Sgn(b) & "}") >>52
arrayで2x2の配列が作れるかい?
2x2の配列と配列の配列は別物だよ。 array(array(1,2),array(3,4))
これでvlookupきぐから2次元だっぺよお? >>49
角括弧([])はEvaluateの糖衣構文ではあるものの、
角括弧内で変数は評価されない
だから変数として書いた部分が変数として評価されず、
名前が定義されてないってエラーである2029が返る >>54
行列計算したかったんだが、
今やってみると
array(array(1,2),array(3,4))
でも動くな。
2x2の配列を作りたかった苦労は何だったのだろう。
それにしても行列計算の関数て使用頻度少ないな。 >>59
行列の積はWorksheetFunction.Mmult()、
逆行列はWorksheetFunction.Minverse()、
行列式を求めるWorksheetFunction.Mdeterm()ってのがあったりする 最近VBAを学びなおそうとしてるんだけど、最近はweb情報を取得する場合はIEは使わない感じ?
いまはExcelでスクレイピングするなら何が主流なの? >>61
旧IEが昨今のネット社会からサポート終了になってるので、
IEだと見えないサイトが有る。
だから、Seleniumを普通は使う。
それにSeleniumのほうがスクレイピングで使えるコマンドが多いからSeleniumを使うのがおすすめ。
だけど、SeleniumはSeleniumbasicをインストールする必要があるので、
会社がそんなの入れるなていうバカな会社ならIEでやるしかない。 >>61
まだIEでもスクラップは可能だけど、古いサンプルはそのままでは動かないケースが増えてる
ちょっと修正すればいいんだけど、これが意外と面倒
>>62
Seleniumは必須じゃないよ
ググればSeleniumを使わずにEdgeやChromeを操作するサンプルが出てくる
ただし、もう一つのWebDriverモジュールは必要なので、面倒なことに変わりないけど VBA学び直すくらいなら、RPA学びながらやった方ができること増える あ、RPAでもスクレイピングうまくいかないサイトもあるので、seleniumはその時やればいい >>63
結局、WebDriverがいるんでしょ。
セキュリティに厳しいところ向けにSeleniumをインストールしませんがWebDriverは必要ですなんて、
ペテンだよ。
だったらはじめからSeleniumをインストールしたほうがいい。 ユーザーフォームにブラウザコントロールを貼り付けたらどうかと思って試してみたら、中身はIEだった
EdgeベースのブラウザコントロールもVBなら使えるんで、がんばればVBAでもやれそうな気はする
あと、どこかでWebDriverをVBAだけで再現してる人を見た気がする https://www.codeproject.com/Tips/5307593/Automate-Chrome-Edge-using-VBA
WebDriverを使わずにChromiumをコントロールする方法はこれかな
ほかにも同じようなことをやってる人がいたはず
見たときにブックマークしとけばよかった どうでもいいけど、
イマドキ、ブラウザのブックマークやらお気に入りではとても追いつかなくて
Webクリップアプリは必須とちゃうん?
OneNoteとかEvernoteとかNotionとか >>68
WebDriverを使わないってだけで、WebDriverの代わりに何かをインスコさせるだけじゃないの?
ページのコード動かしてみたけど、定義されてないっていってくるぜ。
結局、WindowsとExcelだけで動かすには旧IEをCOMで動かすしかない。
seleniumとかWebDriverを使わないっていってるのって、だいたいインチキ。 Webview2がExcelに対応してくれないから、もう諦めてWinhttpにしたわ いいなぁそういう話題
専門部署じゃないけどVBAであれもこれも自動化出来ますって連呼してた中途のおっさんが完全に詐称だった
マクロの記録から始める自動化2003みたいな本を就業中にずっと見て居眠りまでしてんじゃねーよカス
イラつきすぎてストレスやべぇ 自動化できます( ・´ー・`)ドャ
普通なら黙っとくものだよね。
自分の作業でコッソリ使うものだよマクロは >>74
で?それが何か?
VBSとVBAは違うものだけど 能力の低さに苦笑せざるを得ない。
しっかりしなはれ VBSとVBAが同じものだと思ってるヤベー奴が本当にいるとは… >>78
誰が「VBSとVBAが同じ」だと言った? >>77
おまえは定時実行をまだOn Timeメソッドでやっているのか?
ご苦労なこった でもVBSなんて今時普通使うことある?
業務ではすんごい昔のWebシステムでClassic Aspで作られてる奴改修するくらいしか当たる機会ないんだけど。 お前が気づかんだけで
スクリプトとかVBSてまだ大活躍だぞ。
オレのテレビ番組録画システムもVBSが結構あるからpowershellに書き換えんと。 xlsmファイルはいちいちマクロブロックされてウザいからvbsにしてる お前らみたいな知識の持った奴の煽り合いなんて平和なもんだわ
自動化出来ますおじさんに業務中に今更マクロの勉強ばっかりされても困るって注意したわ
その腐った本と一緒に焼却されろよマジで ここはVBAスレ
掲示板の初歩的なルールすら守れないやつがマウント? >>86
ID:Y60s2JI8はVBSとVBAが違うものだとわからずに書き込み、それを指摘されて必死にごまかしているだけ このスレもExcelスレも質が大幅に落ちたよな。VBSとか関係ない話で争い起きたり。
昔のいい感じの流れは復活しないのか? 前触れも説明も無くとーとつにVBSのリンクを貼り付けた、その意図をご説明願いたい 何がしたかったん? >>88
ちゃんとした質問にはちゃんとした回答来てるように見えるけどね ID:Y60s2JI8は例の日本語ワープロが使えたことが自慢だった零細企業の爺だろ
口調が同じ
VBAもわからず絡んでいた馬鹿だよ ワープロ自慢て下手すりゃ60代よりさらに上の世代じゃね?70代オーバーとか 昔のワープロってディスプレイが1行しかなかったのに、あれで文書作れることに驚いたわ。 スレ違いの話題を続ける奴、
ワープロ使える自慢の爺と同レベルの馬鹿なんだけど、
本人達って気付かないもんなんだな こんな事で争うなよ…
中途の奴に重圧かけて作らせたの見てみたら
Aさんの営業利益とかセルに出力されたわ
てめぇどっかのサイト丸ごと引用してやがるだろころすぞ VBAで正規表現を使うために頻繁に
Set RE = CreateObject("VBScript.RegExp")
を使っているんだが、
VBScriptが終了したらこれを使ったコード動かなくなるの? 汗
ttps://gigazine.net/news/20240527-microsoft-vbscript-deprecation-timeline/ >>99
でもExcelに正規表現関数追加されるよ OLEとかCOMとかわからないのかよ
これらはVBSのモジュールだと思ってんのか? >>101
VBScript.RegExpはVBS(Script Engine)の一部
2024H2でオプトアウト出来る(deprecated phase 1)
2027以降はオプトインでインストール(deprecated phase 2)
その後のタイミング(未定)で廃止 >>101
名前空間がVBScriptなのにVBSじゃない方がビビるわ VBAは互換性の為だけにVB6仕様にしているのだが、
vbsが消えるのを機に切り捨てて、別の仕様にしたら良いよ
古すぎるわ まあvbsが消えるのを機と言っても直接的な関係性は無いし
未だにVBAはdeprecationされてない
望む声はあってもMS的にはこの20年間、不可能の判断でしょ 正規表現関数は試験的に導入だから今後実装されるか分からないと聞いた。 >>110
半年もしたらオプトアウトして確かめられるね >>104
俺もそうかと思ってたんだけど、例えばVB.Netに移行(まぁVB.Netも大概古いけど)するとして、Variantの部分とかどう補うんだろ?
高速化のために、VariantにRangeの値を突っ込んで配列として使ってる人も結構いると思うんだけど、
.Netじゃなくても今Variantなんて型持ってる言語、中々無いんじゃない? >>112
Variant型は元々Windows内部のライブラリに組み込まれてる
VBAやVBに独自の物ではない
だから、他の言語でもWindows環境であれば、使おうと思えば使える ____∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
~' ____(,,゚Д゚)< VBA逝ってよし!
UU U U \________ >>113
え?じゃ、例えば.Netではどんな構文で書けるの? VBAが廃止されても関係なくVBAを趣味でやり続けたい なおさらもっと楽しい言語いっぱいあると思うが・・・ 今でも米国でVBAエンジニアの給与2000万円クラスだってな。日本でも正当にその価値を評価してほしいわ。 それはVBAだからではない
米では年収1000万円以下が低所得層 行政書士は、なぜ高年収なのか?
行政書士は低年収のはずだが、
元から高年収のサラリーマンが資格を取るから、高年収になるだけ
Rubyは、Go/Rust/Elixir の3大言語を超えた!
Stack Overflow 米国年収。2022 -> 2023
Ruby : 9.3 -> 9.9 万ドル
Elixir : 9.3 -> 9.6
Go : 8.9 -> 9.3
Rust : 8.7 -> 8.7
多くの言語 : 6.5〜7 -> 7.3〜7.8
PHP : 5 -> 5.9
Dart : 4.4 -> 5.6
PHP, Dart は、コンピューターサイエンスを勉強していない高卒用言語 >>120
日本じゃvbaエンジニアという職すらない VBAで正当な評価をして欲しいって字面だけ見ると滑稽だけどめちゃくちゃ今でも重要なスキルだね
でも2000万を引き合いに出すのはやっぱり笑う VBAをしっかり書ける人は貴重な存在なはず。だって日本のExcelユーザーの半数はVBAスキルが無いと聞いたから(ヤフーか何かの記事で見た)
VBAが書ける人はもっと自信もって良いと思いますよ 会社役員的にはエクセルでお金を稼いでるわけじゃないという感じだろう
なので、vbaを書ける人に大金は払いたくない Excelユーザーなのにマクロ書けない事自体が問題なのだが。
Excelできる=マクロも書けるの図式でしょ? >>128
その調査はスキルあるって言っても、数式が書ける程度のレベルも入れてそうだけど マクロのスキルがあっても対人スキルがないから
ネットでマクロの自慢するしか出来ないのか ExcelもVBAも業務を効率化するための道具だよ
「VBAできます」じゃ経営者はなんとも思わない
これだけ人件費が削減できます、納期が短縮できます、利益が増えますってプレゼンして、利益の何割かを技能手当としてもぎ取れるのが一流のプログラマー >>132
マクロ書けても統計関数使えない人だっているからその認識は間違い マクロ使える=Excelの上級レベルだと職場の先輩上司に聞いたし。 全部覚える必要は無いと思う。仕事に必要な知識だけで良いと思う。 >>141
ど、どうやって? 俺等は単なる兵隊だや 一般的に言えばマクロは上級でいいと思う
その中でもpower query(M言語?)使えるかでも分けられる
PQ使えば簡単なのにマクロ書いてたら下級の範疇に格下げになる pythonで描けるようになって
VBA滅びると思ったが
あと20年経っても残ってそう
ゴキブリか AI,それでもちょくちょく間違ったコード書く場合あるから油断ならん。 少なくともうちではAIは役に立たん
今やってることはネットでは誰も公開も解説もしてないはずだから答えられるわけがない 意外にもExcelに関してはAIを利用していないとの話も聞いたし。 copilotキーがあるPCに置き換わり出したら
あれ?俺でもvba作れるじゃんwと大したことがないことがバレ始める
リストラされる可能性を考えておいた方がいい ようするに「検索してコピペ」を自動化したのが今のAIだもんな
今まで手作業でやってきたことと同じ 今のAIの認識はただの検索してコピペとは違うと思うよ いいようにもっともらしくとりつくろってあたかもただしいかのごとくふるまうんだよね >>162
理解のなさと理解しようとする気のなさどちらも確り感じられる良レス ただの検索じゃないでしょ。独創的なマクロも書いてくれる >>164
お前にとっては独創的なだけ
無能がありがたがるよね copilotでも具体的に動きを書かないといけないから無理な人は無理だろう
分かる人が使えばコード書くのが爆速になる コパイ、絵の生成してみてスゲーってたまにやってるが、ソースはあまりやったことないな
記事など見てスゴイのはわかってるんだが 僕のVBAスキルはAIなんかに出来っこないんだ!そんな奴馬鹿なんだ!
ワロタ >>171
馬鹿だから理由がわからんのだろ
馬鹿にとっては宝の山に見えるだけで実際はゴミの山
時々お宝があるだけ AIなんてただのサブルーチン
偉い人にはそれがわからんのですよ 認めたくないものだな、偉い人へのひがみというものを VBAの仕事はITリテラシーの低い組織に対する介護福祉みたいなもんで人間の温もりが大切だから、簡単にAIに置き換わることはないよ
自分達でAI駆使してシステム内製できるような組織なら、VBAでやるような仕事なんてとっくにどこぞのSaaSやスクラッチのWebシステムに置き換わっているわけで