アプリ版:「スタンプのみでお礼する」機能のリリースについて

一つのブックに名前が1、2、3~31と31枚シートがあって、月毎にブックを分けて管理している
物があるのですが、ほぼすべてのデーターが前日のデーターを必要としており、月が替わった
1日のデーターで前月のデーターを取得する際、

『 =[23-01.xlsx]31!XX 』 といった感じでデーターを拾ってきてます。その翌月は
『 =[23-02.xlsx]28!XX 』 という風になるのですが、23-01を23-02へ、31を28へと
置き換えるのに数も多く非常に時間がかかって困っています。

※ XXは任意のセル。

上手く言葉で表現できないのでイメージですが

(A1のセルに 23-01.xls を入力)(A2のセルに 31 を入力)で

『 =[A1]A2!XX 』と入力したら23-01.xlsの31というシートからXXデーターを
取得するといった風な感じの事を行う方法は無いのでしょうか?

○○関数でこうすればとかVBAでこうすればとかあれば知恵をお貸しいただけると
助かります。

よろしくお願いします。

A 回答 (3件)

一番手っ取り早く確実な手順は,次の通りです。



準備:
今から書き換えの作業をするブックを開く
そのブックが「変更前に」参照している「23-01.xlsx」を開く
そのブックが「変更後に」参照する「23-02.xlsx」を開く

手順:
今から書き換えの作業をするシートで
Ctrl+Hで置換のダイアログを出し
[23-01.xlsx]31

[23-02.xlsx]28
に全て置換する


補足1:
手順に慣れてくれば,変更前後に参照している「23-01.xlsx」や「23-02.xlsx」を必ずしも開いおかなくても,それらを開いてない状態でのセルの数式(「='c:\folder\[23-01.xlsx]31'!A1」のような)をよく見て,その状態からどういう具合に置換の操作をすればよいか考えて操作すれば出来ます。


補足2:
>(A1のセルに 23-01.xls を入力)(A2のセルに 31 を入力)で
>…データーを取得するといった風な感じの事を行う方法は無いのでしょうか?

ご質問の直接の回答としては,そういった事はINDIRECT関数を使って出来ます。
が,そのやり方では『常に』23-02.xlsxなどを『開いた状態』にしておかないと,計算が通りません。通らないとは,数式がエラーになるという意味です。
これでは実用的ではなく,ご質問の状況全体としてあまり役に立ちません。
    • good
    • 0
この回答へのお礼

置換の存在を完全に忘れてました、言われてみれば置換で一瞬で終わる作業ですね(><)
なんで1年以上気付かなかったんだろ…。

大変助かりましたありがとうございます。


※ちなみにINDIRECT関数では一度試してみて、仰られる通りの使用方法しか出来ず断念しました。

お礼日時:2011/07/05 04:20

逆の考え方で、同一ブック内において(月末に)


月末の日付シートをコピーして「月末」という名前のシートにしておいてはいかが?

=[23-02.xlsx]月末!XX
    • good
    • 0

#2です。

ブックの参照の変換も必要なんですね。
やはり、keithinさんのおっしゃる通り、[Chrl]+[H]置換 が早そうです。
合わせ技で、月末の日付シートは常に「月末」にしておいてもいいかも。

もっと根本的なことを言うと、
1年間のデータを同一シート上に(データベース形式で)保存できないか
ってことです。抽出や並べ替え、集計をしないなら意味ないですが。
    • good
    • 0
この回答へのお礼

月末の日付は決まってるので、確かに予めシート名を変えてしまうのもありですね。
その方法も考えてみたいと思います。

1年間のデーターを同一シートで集めるのは、出来るなら一番行いたい方法です。
ただPCの性能がPentium3クラス&メモリの足りないのでエクセルを使う限りは
一ヶ月毎のデーターで正直限界です。

根本的な部分だとエクセルでやろうと思うのが行けないのでしょうが、知識不足の
問題でデーターベース系のソフトは無理っぽいです。

お礼日時:2011/07/05 04:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!