製品データを週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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エクセルで、シートの名前を変えても式にエラーが出ないようにしたい
Excel(エクセル)
-
エラー「#REF」の箇所を置き換える方法
Excel(エクセル)
-
EXCEL関数でシート名が変わる可能性があるシートのデータを表示させたい
その他(ソフトウェア)
-
-
4
リンク貼り付け:データ元のシートを削除しても貼り付け先の値を残したい
Access(アクセス)
-
5
エクセル:参照しているセルが削除されても数式の参照セル値を変えない。
Excel(エクセル)
-
6
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
7
エクセルの計算式を残したままシートの入れ替えできますか?
Excel(エクセル)
-
8
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
9
Excelで数式だけを消して、数値を残すには?
Excel(エクセル)
-
10
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
11
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
12
VBAで転記すると#REF!に
Excel(エクセル)
-
13
Excel 計算式へ置換時にでてくるエラー
Excel(エクセル)
-
14
エクセルのINDIRECT関数の#REFエラーの対応について
Excel(エクセル)
-
15
エクセルで数式は残したまま他シートからのリンクを一括で外す方法
Excel(エクセル)
-
16
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
17
エクセル関数で日付かどうかの確認?
Excel(エクセル)
-
18
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
19
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
20
excelのCOUNTIF関数で、『範囲=色のついたセル』に設定したいです。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数シートからデータを拾って...
-
エクセルファイルのシート毎の容量
-
excelの不要な行の削除ができな...
-
Excelでシートの違うデータでグ...
-
トランジスタの選び方
-
シート削除して同名シート追加...
-
別々のシートの表をピボットテ...
-
Excelで日付変更ごとに、自動的...
-
エクセル VBA VLOOKUP
-
エクセルのカメラ機能について
-
VBAで CTRL+HOMEの位置へ移動...
-
【エクセル」 特定のセルで条件...
-
エクセルマクロでデータ出力の...
-
Excelですが、同一データが複数...
-
エクセルで複数行のデータを1列...
-
excel2013で、マスターシートの...
-
Excel 売上管理シートに入力し...
-
CMOS-IC CD4007UBEのnmosfetの...
-
コンボボックスの参照先(ListF...
-
AccessからVBAでExcellシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
excelの不要な行の削除ができな...
-
Excelで日付変更ごとに、自動的...
-
VBAで CTRL+HOMEの位置へ移動...
-
トランジスタの選び方
-
EXCELで2つのファイルから重複...
-
EXCEL 複数行のデータを1行にま...
-
他のシートの一番下の行データ...
-
オートフィルタで抽出したデー...
-
エクセルのカメラ機能について
-
(VBAにて)日付でデータを抽出す...
-
エクセルで名簿を50音で切り分ける
-
別々のシートの表をピボットテ...
-
Excel 売上管理シートに入力し...
-
Excelマクロ 差分抽出の方法が...
-
EXCEL の表を一行ずつシートに...
-
エクセルVBAで、特定文字から始...
おすすめ情報