エクセル雑感
いくつかの数式の計算中にリソース不足になりました。

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2023-12-28 最終更新日:2023-12-28

いくつかの数式の計算中にリソース不足になりました。


365のエクセルで最近になって急に出始めたエラーメッセージです。
いくつかの数式の計算中にリソース不足になりました。そのため、これらの数式の値を求められません。
何が原因で出力されるメッセージなのでしょうか・・・
どのような対処をしたら良いのでしょうか・・・



エラーメッセージの詳細

かつて見た覚えのないメッセージです。
最近になって急に出始めたエラーメッセージです。

いくつかの数式の計算中にリソース不足になりました。そのため、これらの数式の値を求められません。

いくつかの数式の計算中にリソース不足になりました。そのため、これらの数式の値を求められません。

最初に見た時は、何が原因なのかちょっと悩みました。
当該ファイルの最近の修正内容から思い当たることはあるのですが・・・

リソース不足
この言葉はエクセルではあまり見かけません。
「リソース不足のため、このタスクを完了することができません…」
このようなメッセージは見かけることはありますかね。
これは本当にメモリ不足だったりするわけで、
まずはエクセルを再起動してみる。
それでダメならPCを再起動してみる。
それでもダメなら、
よりメモリの多い高スペックのPCを使うとか、ブック・シートのサイズを小さくするとかで対応することになると思います。
※ブック・シートのサイズを小さくするには、
・データを少なくする。
・数式を減らす。
・書式を減らす。
・目に見えないゴミデータにも気をつける。
等々を複数対応する。


このメッセージが出る時の状況

はっきりとは限定出来ないのですが、、、
このメッセージが出るのはマクロ(VBA)で保存する前に何らかの変更を行う時に発生しているようでした。
(手動操作時にもメッセージ出力されることはあった気もするのですが…)
VBAでは、不要になったデータを消去した後にブックを保存しています。
ご存じのように、
セル値を変更すれば再計算が行われます。
また、エクセルではブックが保存されるときは事前に自動で再計算されます。
これらの再計算の最中にこのメッセージが出ているようでした。

原因となる特定のVBAコードが常にエラー発生するのなら調べようもあるのですが、状況によって発生したりしなかったり・・・
このメッセージが出た後でも、エクセルを再起動するとしばらくは出なくなります。
でも、さらに使い続けるとまた出るようになります。
そして一度メッセージが出ると、その後はほぼ確実にでるようになってしまいます。

メッセージには「OK」ボタンしかないので当然「OK」をクリックします。
すると特に問題もなくそのまま進みます。
ただし、保存されてVBAが終了るまでに数度このメッセージが出ますので。結構煩わしいです。

保存されたブックを開いて確認しても特に問題は見当たりません。
再計算されていないセルがあるかどうかまでは、全シート確認しきれないのですが・・・
VBAでセル値を変更しているのは特定のセルだけなのですが、これらのセルに間違いは見当たらないのですよね。


このメッセージが出る原因は何か

ある意味ここからが本題になります。
このメッセージが出るのは困りますので、何らかの対応をしてメッセージが出ないようにしなければなりません。
それには、そもそも何が原因なのかが分からないと対処できません。

当該ブックに対して最近行った変更は・・・
ちょっと重めのスピル数式を追加したことです。
スピルについて
2019年にOffice365のExcelに実装された革新的な機能としてスピルがあります。数式を入力したセルから結果があふれて隣接したセルにも出力されるのがスピルです。今までは数式を入れたセルにしか結果を出せませんでしたが、スピルでは隣接するセルにまで結果が表示されます。
前々からスピル数式自体は使っていたのですが限定的な使い方だけでした。
今回の変更では最初にUNIQUE関数でキー値を取り出し、
その後はスピル範囲演算子(#)を使ってその前の計算結果の範囲を次々に引き継いでいく数式を追加したのです。

A列のデータをUNIQUE関数でB列に出力、C列ではB1#で処理、D列ではC1#で処理・・・
この連鎖が数段階になっている作りになっています。
いくつかの数式の計算中にリソース不足になりました。そのため、これらの数式の値を求められません。

いくつかの数式の計算中にリソース不足になりました。そのため、これらの数式の値を求められません。

※画像の数式は特に意味のないサンプルです。

スピル範囲演算子(#)は時々で(データによって)データ範囲が可変になります。

スピル範囲演算子は非常に便利な機能です。
スピル範囲演算子はスピルならではの機能です。

はっきりとは言い切れないのですが、スピル範囲演算子は再計算時には結構重い計算になってしまう可能性を含んでいると思います。
もちろん数式とデータによるのですが、便利だからと言って多用すると結構危険かもしれません。
やたらに重いブックになったり、今回のような謎のメッセージがでたり・・・

つまりメッセージが出る時の直接的な処理内容は、、、
スピル範囲演算子の範囲が大きく変更されるようなデータ変更が行われたときに出ていました。
具体的には、最初のデータ範囲のデータを消去した時ですね。
最初のデータ範囲のデータが無くなる事で、その後のスピル範囲演算子の範囲が次々に変更になっていきます。
この時に、
いくつかの数式の計算中にリソース不足になりました。そのため、これらの数式の値を求められません。
このメッセージが出力される場合があるのです。
複数のスピル範囲演算子を連鎖的に使っていると複数回メッセージが出力される可能性があります。
ただしメッセージが出ない場合もあるので、スピル範囲演算子の数だけメッセージが出るとはかぎりません。

ということで今回追加したスピル数式の部分を、VBAで数式設定して計算後に数式を削除して値にするように対処しました。
これでとりあえずブック自体が大分軽くなりました。
スピル数式を追加してからは手動操作時にも大分重く感じていたのですが、それらが大分軽く感じるようになりました。
そしてメッセージも出なくなりました。
これで一応症状は出なくなったので、しばらく様子を見てみることにします。

_人人人人人人人人人人_
> スピル範囲演算子 <
> 使いすぎに注意! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄




同じテーマ「エクセル雑感」の記事

「ネ申Excel」問題 への同意と反論
「Excel3ステップ理論」3階層システムの応用
「ポケモンを確実に見つける方法」をExcelで数学してみた
エクセルで「もういくつ寝るとお正月」
エクセルで連立方程式を解く(MINVERSE,MMULT)
VBAが消えてしまった!マクロが壊れて動かない!
スピらない スピル数式 スピらせる
難しい数式とは何か?
いくつかの数式の計算中にリソース不足になりました。
無効な前方参照か、コンパイルされていない種類への参照です。
エクセルが起動しない、Excelが立ち上がらない


新着記事NEW ・・・新着記事一覧を見る

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ