<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>INDIRECT &#8211; FITSブログ</title>
	<atom:link href="https://blog.fits-inc.jp/tag/indirect/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.fits-inc.jp</link>
	<description>Webシステムの受託開発でお困りなら</description>
	<lastBuildDate>Wed, 29 Jul 2020 01:29:51 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://blog.fits-inc.jp/wp-content/uploads/2024/06/cropped-image-5-32x32.png</url>
	<title>INDIRECT &#8211; FITSブログ</title>
	<link>https://blog.fits-inc.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Excel で INDIRECT でファイル名をセル参照にするとファイル開かないといけない問題を解決する</title>
		<link>https://blog.fits-inc.jp/2020/07/28/excel-%e3%81%a7-indirect-%e3%81%a7%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e5%90%8d%e3%82%92%e3%82%bb%e3%83%ab%e5%8f%82%e7%85%a7%e3%81%ab%e3%81%99%e3%82%8b%e3%81%a8%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab/</link>
		
		<dc:creator><![CDATA[FITS Admin]]></dc:creator>
		<pubDate>Tue, 28 Jul 2020 16:00:58 +0000</pubDate>
				<category><![CDATA[技術ブログ]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[INDIRECT]]></category>
		<guid isPermaLink="false">https://blog.fits-inc.jp/?p=712</guid>

					<description><![CDATA[　長いタイトルとなってしまいましたが、Excel数式における INDIRECT 関数の例の問題を解決する方法をブログ記事にまとめました。例の問題というのは、INDIRECＴ で他のファイル（ブック）を参照した場合に起きる [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　長いタイトルとなってしまいましたが、Excel数式における INDIRECT 関数の例の問題を解決する方法をブログ記事にまとめました。例の問題というのは、INDIRECＴ で他のファイル（ブック）を参照した場合に起きる問題です。</p>



<h2 class="wp-block-heading">INDIRECTの#REF問題の詳細</h2>



<p class="wp-block-paragraph">　INDIRECT 関数を設定したときには正しく値が取得できていたのに、ファイルを開きなおしたら「#REF」になってしまうこと、ありますよね。なぜこの問題が起きるかと言うと、そもそもExcelの関数は参照先のファイルが開いている時に動作するものと、開いていなくても動作するものに分けられます。INDIRECT関数はその中でも、参照先のファイルが開いている状態でないとエラーになってしまうという制約があるからです。</p>



<p class="wp-block-paragraph">　それでは実際に2つのエクセルファイルを作成してINDIRECTがエラーになることを確認しましょう。適当なExcelファイル、book1.xlsx と book2.xlsx を作成します。</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="912" height="544" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルを作成する.jpg" alt="" class="wp-image-713" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルを作成する.jpg 912w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルを作成する-300x179.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルを作成する-768x458.jpg 768w" sizes="(max-width: 912px) 100vw, 912px" /></figure>



<p class="wp-block-paragraph">　それぞれのファイルの中身として、INDIRECT関数で参照されるブック名をTarget book name としてD2セルに、INDIRECT関数で参照される文字列を「Read this string→」というセルの横（D6セル）に記入します。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="552" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-1024x552.jpg" alt="" class="wp-image-714" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-1024x552.jpg 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-300x162.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-768x414.jpg 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身-1536x828.jpg 1536w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/2つのエクセルファイルbook1とbook2の中身.jpg 1916w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　book1 から book2の値を参照します。具体的な操作としては、book1のD4セルで=を打ち込み数式入力状態にしたうえで、book2のD6セルをクリックします。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="499" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-1024x499.jpg" alt="" class="wp-image-715" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-1024x499.jpg 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-300x146.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-768x374.jpg 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する-1536x748.jpg 1536w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/数式でbook1からbook2を参照する.jpg 1987w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　book1に数式が入力され、book2のD6セルのない世杖ある「This is book2」が表示されました。余談ですが、この状態でbook2を閉じると、下記のようにbook2のパス（例では「=&#8217;C:\Users\xxx\Desktop\[book2.xlsx]Sheet1&#8242;!$D$6」）が数式上で展開されます。これがINDIRECTに指定すべき、正式なパスになります。INDIRECTを使用してないこの段階であれば、book2のD6セルを編集すると、book2が開いているか閉じているかに関わらず、book1のD4セルの値が更新されることが確認できます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="812" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される-1024x812.jpg" alt="" class="wp-image-717" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される-1024x812.jpg 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される-300x238.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される-768x609.jpg 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/book2を閉じることでパスが展開される.jpg 1264w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　次に、この値のうち、ファイル名（ブック名）にあたる[]で囲まれている箇所をセルを参照するように書き換えます。いきなりINDIRECTを書くのではなく、まずはINDIRECTのカッコ内に指定する値（例で言うと=&#8221;&#8216;C:\Users\xxx\Desktop\[&#8221; &amp; D2 &amp; &#8220;.xlsx]Sheet1&#8217;!$D$6&#8243;）を書くと非常にわかりやすいです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-1024x537.jpg" alt="" class="wp-image-718" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-1024x537.jpg 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-300x157.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-768x403.jpg 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く-1536x806.jpg 1536w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/まずはINDIRECTに指定する参照を数式で書く.jpg 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　ではこの数式D4をさらにINDIRECTで囲むなり、他のセルにINDIRECTを書き、カッコの中身としてD4を指定するなどして、INDIRECTによる参照を有効にします。（例ではD5セルに「=INDIRECT(D4)」を入力しています）</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="936" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する-1024x936.jpg" alt="" class="wp-image-719" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する-1024x936.jpg 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する-300x274.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する-768x702.jpg 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/INDIRECTの引数として参照名を書いたセルを指定する.jpg 1058w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　この状態で、D2セルに入力した参照先のブック名をbook1、book2と交互に切り替えると、INDIRECTで参照しているD5セルの結果も「This is book1」「This is book2」と交互に切り替わります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="610" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-1024x610.jpg" alt="" class="wp-image-721" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-1024x610.jpg 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-300x179.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-768x458.jpg 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1-1536x916.jpg 1536w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/TargetBookNameを切り替えるとINDIRECTによる結果も変わる-1.jpg 1674w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　book2 を参照した状態で book2を閉じると、D5セルが #REF として参照エラーになってしまうことが分かります。もし、きちんと値が表示されている、という場合はbook1を開きなおしてみてください。D5セルが#REFになると思います。同時にbook2も開くと、きちんと「This is book2」が表示されるため、数式のエラーではないことが分かります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="881" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる-1024x881.jpg" alt="" class="wp-image-722" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる-1024x881.jpg 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる-300x258.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる-768x661.jpg 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/外部ファイルをINDIRECTで参照するとREFになる.jpg 1104w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　それではどうすればいいのかというと、VBAのマクロを使用するというのが方法としてあります。何とかセルへの数式だけで実現したいところですが、セルの数式では実現不可能ですので仕方ありません。</p>



<p class="wp-block-paragraph">　開発リボンから挿入 &gt; フォームコントロールのボタンを挿入します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="918" height="750" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/フォームのボタンを挿入する.png" alt="" class="wp-image-723" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/フォームのボタンを挿入する.png 918w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/フォームのボタンを挿入する-300x245.png 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/フォームのボタンを挿入する-768x627.png 768w" sizes="auto, (max-width: 918px) 100vw, 918px" /></figure>



<p class="wp-block-paragraph">　この時、同時にマクロを作成できますので作成しておきます。名前は何でもよいですが、今回はリロード_Clickとしておきます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="675" height="626" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを新規作成する.png" alt="" class="wp-image-724" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを新規作成する.png 675w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを新規作成する-300x278.png 300w" sizes="auto, (max-width: 675px) 100vw, 675px" /></figure>



<p class="wp-block-paragraph">　マクロを利用して、D4セルに記載される数式を<br>=&#8217;C:\Users\xxxx\Desktop[&#8221; &amp; Range(&#8220;D2&#8221;).Value &amp; &#8220;.xlsx]Sheet1&#8242;!$D$6&#8221;<br>とすることで<br>=&#8217;C:\Users\xxxx\Desktop[book1.xlsx]Sheet1&#8242;!$D$6<br>=&#8217;C:\Users\xxxx\Desktop[book2.xlsx]Sheet1&#8242;!$D$6<br>のいずれかに動的に切り替わるようにしています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="554" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-1024x554.jpg" alt="" class="wp-image-725" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-1024x554.jpg 1024w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-300x162.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-768x416.jpg 768w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する-1536x832.jpg 1536w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/マクロを作成して数式を変更する.jpg 1904w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　なお、もしリロードボタンを押した際に下記のようにファイルダイアログが開くのであれば、ファイルが存在しない（または、数式が間違っている）可能性がありますので、数式やファイルの存在の確認をしましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="943" height="715" src="https://blog.fits-inc.jp/wp-content/uploads/2020/07/値の更新ダイアログ.jpg" alt="" class="wp-image-726" srcset="https://blog.fits-inc.jp/wp-content/uploads/2020/07/値の更新ダイアログ.jpg 943w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/値の更新ダイアログ-300x227.jpg 300w, https://blog.fits-inc.jp/wp-content/uploads/2020/07/値の更新ダイアログ-768x582.jpg 768w" sizes="auto, (max-width: 943px) 100vw, 943px" /></figure>



<p class="wp-block-paragraph">　なお、拡張子がxlsxのまま保存すると作成したマクロが削除されてしまいますので、保存する際はマクロつきのエクセルファイル（.xlsm）として保存をお願いします。</p>



<p class="wp-block-paragraph">　いかがでしたでしょうか？INDIRECTは閉じられたファイルに対して使用すると#REFのエラーが発生してしまい、それを回避するためにはINDIRECTではなくマクロを使用して外部ファイルを参照するような数式を生成する必要がある、という結果となりました。マクロまで作成するのは敷居が高い、場合によっては使えない可能性のある手段ですが、どうしても参照先ファイルをセル参照で柔軟に設定したい、という場合に使える重要なテクニックですので、ぜひお役立てください。</p>



<h2 class="wp-block-heading">Excel でお困りの方は</h2>



<p class="wp-block-paragraph">　もし Excel でお困りのことがあれば、仙台のWebシステム受託開発のエキスパート集団であるFITSに是非お任せください。最近ですと、建築業界、建設業界のお客様より工事の原価管理、工程管理のExcelの解析、改善依頼など頂いた実績が御座います。前任者不在のExcelなどでお困りの際は、是非一度ご相談ください。</p>



<p class="wp-block-paragraph">お問い合わせは<br><a href="https://www.fits-inc.jp/inquiry/">https://www.fits-inc.jp/inquiry/</a><br>からお気軽にどうぞ。システムに関する無料の相談、お見積りも受け付けております。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
