![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
製品データを週1回まとめているのですが、データ量が多いため
その都度、製品データのシートを別ファイル(データまとめ)に追加しています。
シートの追加をする際、古いデータシートは削除してから追加します。
シートの追加方法は、マクロで行っています。
Private Sub CommandButton2_Click()
Workbooks("製品データ.xls").Worksheets("データ").Copy _
After:=Workbooks("データまとめ.xls").Worksheets("まとめ")
End Sub
別ファイル(データまとめ)のまとめシートのB2セルには以下の数式が入っています。
INDIRECT関数を使用していますが、シートの削除(製品データ!)を行うと、#REFとなります。
=IF(ISERROR(VLOOKUP($A2,INDIREDCT(製品データ!$B$2:$G$93),4,0)),"データなし",VLOOKUP($A2,INDIRECT(製品データ!$B$2:$G$93),4,0))
数式に何か落ち度があるのでしょうか?
シートの削除・追加をしても、数式がエラーにならない方法を探していますが
#REFの置き換えをする方法しかないのでしょうか?
その他の方法で解決策がありましたら、何卒ご教示お願いします。
No.3ベストアンサー
- 回答日時:
>シートの削除・追加をしても、数式がエラーにならない方法
INDIRECT()関数の最初の引数に「文字列」を指定して参照すればよいです。
× INDIREDCT(製品データ!$B$2:$G$93)
○ INDIREDCT("製品データ!B2:G93")
---
質問者さんの式の
INDIREDCT(製品データ!$B$2:$G$93)
のように書くと、以下と同じ意味になります。
製品データ!$B$2:$G$93
つまり「INDIRECT()関数が無いのと同じ」です。
INDIRECT()関数無しに「直接に参照している」のですから、参照シートが削除されれば「#REF」になるのが当たりまえです。
回答ありがとうございます。
なるほど、絶対参照が邪魔をしてしまってるわけですね?
ただ、下の行にコピーするため、絶対参照をつけているのですが
ご回答いただいた式にすると、一つ一つ式を入力するしかないのでしょうか?
なにぶん行数が多いもので(>人<;)
No.2
- 回答日時:
そうですねー。
一度削除することによって、いくらシート名を同名にしてもうまく噛み合わないのだと思います。#REFを新しくつけたシート名で置き換えたほうが無難だと思いますよ。
回答ありがとうございます。
置き換えが一番楽で、無難なんでしょうかねぇ。
ただ、色んな人が利用するのでなるべく工数が少ないものをと思っているので、この方法もまた最終手段として候補にしておきます(^-^)/
No.1
- 回答日時:
数式の中では「シート名」を使ってシートを識別しますが、
内部計算ではオブジェクト番号で識別されています。
ですから、あるシートを削除してから同一のシート名のシートを追加しても、
数式内ののオブジェクト番号は更新されません。
その数式をどいこかにコピーして、数式を消してからもう一度貼り付けてみては
どうでしょうか?
あらたな数式な対しては新しいオブジェクト番号のシートが参照されます。
回答ありがとうございます。
なるほど、数式を別で準備してもってくる方法がありますね。
最終手段としてその方法をやってみようと思います(^-^)/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルで、シートの名前を変えても式にエラーが出ないようにしたい
Excel(エクセル)
-
エラー「#REF」の箇所を置き換える方法
Excel(エクセル)
-
EXCEL関数でシート名が変わる可能性があるシートのデータを表示させたい
その他(ソフトウェア)
-
-
4
リンク貼り付け:データ元のシートを削除しても貼り付け先の値を残したい
Access(アクセス)
-
5
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
6
Excelで数式だけを消して、数値を残すには?
Excel(エクセル)
-
7
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
8
エクセルの複数のセルを一括で絶対参照にする方法
Excel(エクセル)
-
9
エクセルのINDIRECT関数の#REFエラーの対応について
Excel(エクセル)
-
10
エクセルで数式は残したまま他シートからのリンクを一括で外す方法
Excel(エクセル)
-
11
エクセル:参照しているセルが削除されても数式の参照セル値を変えない。
Excel(エクセル)
-
12
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
13
VBAで転記すると#REF!に
Excel(エクセル)
-
14
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
15
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
16
エクセル: セルの枠を超えて表示
Excel(エクセル)
-
17
VLOOKUP関数を使用時、検索する値は昇順に並べ替える必要がありますか。
Access(アクセス)
-
18
EXCELでコピーしたグラフのデータ範囲変更について
Excel(エクセル)
-
19
ヘッダー
Excel(エクセル)
-
20
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数シートからデータを拾って...
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
Excelでシートの違うデータでグ...
-
VBAで CTRL+HOMEの位置へ移動...
-
シート削除して同名シート追加...
-
【エクセルマクロ】複数シート...
-
エクセル VBA VLOOKUP
-
別々のシートの表をピボットテ...
-
【Excel】マクロでグラフ系列に...
-
エクセル マクロ "特定の日付...
-
EXCEL 複数行のデータを1行にま...
-
エクセルで行の自動非表示の方法は
-
トランジスタの選び方
-
エクセルで複数の条件を抽出し...
-
Excelで日付変更ごとに、自動的...
-
EXCEL グラフ作成 データの範...
-
他社代替品教えて下さい!!
-
Excel 売上管理シートに入力し...
-
Excelでテーブルを2次元の表に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数シートからデータを拾って...
-
エクセルファイルのシート毎の容量
-
Excelでシートの違うデータでグ...
-
excelの不要な行の削除ができな...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
EXCELで2つのファイルから重複...
-
VBAで CTRL+HOMEの位置へ移動...
-
オートフィルタで抽出したデー...
-
トランジスタの選び方
-
ファンモータが作動しない。
-
EXCEL 複数行のデータを1行にま...
-
別々のシートの表をピボットテ...
-
エクセルのカメラ機能について
-
エクセル マクロ "特定の日付...
-
他のシートの一番下の行データ...
-
(VBAにて)日付でデータを抽出す...
-
エクセルVBAで、特定文字から始...
-
【エクセル」 特定のセルで条件...
-
EXCEL の表を一行ずつシートに...
おすすめ情報