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

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が消えてしまった!マクロが壊れて動かない!
スピらない スピル数式 スピらせる
難しい数式とは何か?
いくつかの数式の計算中にリソース不足になりました。
無効な前方参照か、コンパイルされていない種類への参照です。


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

無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)
イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)
PIVOTBY関数(縦軸と横軸でグループ化して集計)|エクセル入門(2023-11-19)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門




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


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



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