製品データを週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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
エクセルで、シートの名前を変えても式にエラーが出ないようにしたい
Excel(エクセル)
-
エラー「#REF」の箇所を置き換える方法
Excel(エクセル)
-
EXCEL関数でシート名が変わる可能性があるシートのデータを表示させたい
その他(ソフトウェア)
-
-
4
リンク貼り付け:データ元のシートを削除しても貼り付け先の値を残したい
Access(アクセス)
-
5
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
6
VBAで転記すると#REF!に
Excel(エクセル)
-
7
エクセル:参照しているセルが削除されても数式の参照セル値を変えない。
Excel(エクセル)
-
8
エクセルの計算式を残したままシートの入れ替えできますか?
Excel(エクセル)
-
9
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
10
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
11
Excelで数式だけを消して、数値を残すには?
Excel(エクセル)
-
12
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
13
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
14
Excel 計算式へ置換時にでてくるエラー
Excel(エクセル)
-
15
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
16
エクセルで数式は残したまま他シートからのリンクを一括で外す方法
Excel(エクセル)
-
17
エクセル関数で日付かどうかの確認?
Excel(エクセル)
-
18
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
19
エクセル:シート名を手入力でなく、セル「A1」の文字を出したい。
Excel(エクセル)
-
20
エクセルで表示形式の時刻の「0:00」を表示しないようにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
Excelで日付変更ごとに、自動的...
-
エクセルで名簿を50音で切り分ける
-
excelの不要な行の削除ができな...
-
シート削除して同名シート追加...
-
他のシートの一番下の行データ...
-
VBAで CTRL+HOMEの位置へ移動...
-
エクセル VBA VLOOKUP
-
エクセル マクロ "特定の日付...
-
【エクセルマクロ】複数シート...
-
オートフィルタで抽出したデー...
-
Excel 売上管理シートに入力し...
-
Excelファイルの容量が異常に大...
-
エクセルで複数行のデータを1列...
-
エクセルで一覧表から担当別シ...
-
エクセルのファイルが8MBも!!
-
エクセルで行の自動非表示の方法は
-
ピボットテーブルのデータソー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
excelの不要な行の削除ができな...
-
VBAで CTRL+HOMEの位置へ移動...
-
(VBAにて)日付でデータを抽出す...
-
EXCELで2つのファイルから重複...
-
他のシートの一番下の行データ...
-
エクセルのカメラ機能について
-
トランジスタの選び方
-
別々のシートの表をピボットテ...
-
エクセル 縦に長い表の印刷時...
-
EXCEL 複数行のデータを1行にま...
-
【エクセル」 特定のセルで条件...
-
オートフィルタで抽出したデー...
-
Excel 売上管理シートに入力し...
-
エクセル VBA VLOOKUP
-
EXCEL の表を一行ずつシートに...
おすすめ情報