- ベストアンサー
シート削除して同名シート追加するも#REFになる
- 製品データを週1回まとめているのですが、データ量が多いためその都度、製品データのシートを別ファイル(データまとめ)に追加しています。シートの追加をする際、古いデータシートは削除してから追加します。
- シートの追加方法は、マクロで行っています。しかし、シートの削除を行うと、特定の数式で#REFエラーが発生してしまいます。
- もし#REFエラーを防ぐ他の方法があるのであれば、ご教示いただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>シートの削除・追加をしても、数式がエラーにならない方法 INDIRECT()関数の最初の引数に「文字列」を指定して参照すればよいです。 × INDIREDCT(製品データ!$B$2:$G$93) ○ INDIREDCT("製品データ!B2:G93") --- 質問者さんの式の INDIREDCT(製品データ!$B$2:$G$93) のように書くと、以下と同じ意味になります。 製品データ!$B$2:$G$93 つまり「INDIRECT()関数が無いのと同じ」です。 INDIRECT()関数無しに「直接に参照している」のですから、参照シートが削除されれば「#REF」になるのが当たりまえです。
その他の回答 (2)
- dakedakepuru
- ベストアンサー率20% (1260/6200)
そうですねー。一度削除することによって、いくらシート名を同名にしてもうまく噛み合わないのだと思います。 #REFを新しくつけたシート名で置き換えたほうが無難だと思いますよ。
お礼
回答ありがとうございます。 置き換えが一番楽で、無難なんでしょうかねぇ。 ただ、色んな人が利用するのでなるべく工数が少ないものをと思っているので、この方法もまた最終手段として候補にしておきます(^-^)/
- Saturn5
- ベストアンサー率45% (2270/4952)
数式の中では「シート名」を使ってシートを識別しますが、 内部計算ではオブジェクト番号で識別されています。 ですから、あるシートを削除してから同一のシート名のシートを追加しても、 数式内ののオブジェクト番号は更新されません。 その数式をどいこかにコピーして、数式を消してからもう一度貼り付けてみては どうでしょうか? あらたな数式な対しては新しいオブジェクト番号のシートが参照されます。
お礼
回答ありがとうございます。 なるほど、数式を別で準備してもってくる方法がありますね。 最終手段としてその方法をやってみようと思います(^-^)/
お礼
回答ありがとうございます。 なるほど、絶対参照が邪魔をしてしまってるわけですね? ただ、下の行にコピーするため、絶対参照をつけているのですが ご回答いただいた式にすると、一つ一つ式を入力するしかないのでしょうか? なにぶん行数が多いもので(>人<;)