一つのブックに名前が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

#2です。

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

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

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

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

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

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

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


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

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qexcel2000で[データ] ⇒ [区切り位置]の使い方は

記述が理解しにくいとのことなので表現を詳しく変えました。

応募者用に指定してある、
年月と経歴記述との間に縦罫線が入った履歴書書式(添付を参照)に、
ms-wordで作って保存してある縦罫線無しの形式の履歴書を
読み込みまたはcopy & pasteして
その縦罫線が入った書式内に、、
縦罫線の両側に年月と経歴記述とを分離させた状態で
はめ込む処理をしたいのです。
flow chart形式で手順を教えてください。

追加情報は、
最後の段階でwordに戻って何か処理をするらしいということです。

Aベストアンサー

> excel2000で[データ] ⇒ [区切り位置]の使い方は

下記URLのページのような使い方をします。
「切り位置で楽々データ分割」
http://kokoro.kir.jp/excel/delimitation-position.html

> 応募者用に指定してある、年月と経歴記述との間に縦罫線が入った履歴書書式(添付を参照)に、
> ms-wordで作って保存してある縦罫線無しの形式の履歴書を
> その縦罫線が入った書式内に、縦罫線の両側に年月と経歴記述とを分離させた状態ではめ込む処理をしたいのです。

1)
応募用のExcelファイルのセルの1個ずつに、当該データ(日付とその内容に分けて)コピペします。
(手数は必要ですが、いろいろな方法を調べている時間より短時間で完成できると思います。)

2)
1. 応募用紙の邪魔にならない部分に、作成したWordファイルをコピペします。
2. 前記URLを参照して、「データ」→「区切り位置」を操作して、表示位置を縦罫線の両側の所定セル範囲を指定します。
(但し、Wordのファイルのデータが「日付」と「その内容」の間にスペースなどの「区切り記号」が挿入されていることが条件です。)

> 最後の段階でwordに戻って何か処理をするらしいということです。

??

> excel2000で[データ] ⇒ [区切り位置]の使い方は

下記URLのページのような使い方をします。
「切り位置で楽々データ分割」
http://kokoro.kir.jp/excel/delimitation-position.html

> 応募者用に指定してある、年月と経歴記述との間に縦罫線が入った履歴書書式(添付を参照)に、
> ms-wordで作って保存してある縦罫線無しの形式の履歴書を
> その縦罫線が入った書式内に、縦罫線の両側に年月と経歴記述とを分離させた状態ではめ込む処理をしたいのです。

1)
応募用のExcelファイルのセルの1個...続きを読む

Q[VBA]文書内の特定語句をハイライト[Word]

ある単語のリストがあり、そのリストにある単語が Word 文書内にある場合、すべてをハイライトしたいのですが、うまくできません。
次のコードです。これだと「初出のみ」のヒットしかハイライトされません。
これを「ヒットしたすべて」にかえることはできるのでしょうか?

Dim search(2) as string
search(0) = "abc"
search(1) = "def"
search(2) = "ghi"

For i = 0 To 2

Selection.Find.ClearFormatting
With Selection.Find
.Text = search(i)
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute
Selection.Range.HighlightColorIndex = wdBrightGreen

Next

ある単語のリストがあり、そのリストにある単語が Word 文書内にある場合、すべてをハイライトしたいのですが、うまくできません。
次のコードです。これだと「初出のみ」のヒットしかハイライトされません。
これを「ヒットしたすべて」にかえることはできるのでしょうか?

Dim search(2) as string
search(0) = "abc"
search(1) = "def"
search(2) = "ghi"

For i = 0 To 2

Selection.Find.ClearFormatting
With Selection.Find
.Text = search(i)
.Forward = True
.Wrap = wdFindContinue
...続きを読む

Aベストアンサー

Sub Sample1()
 Dim search(2) As String

 search(0) = "abc"
 search(1) = "def"
 search(2) = "ghi"
 Options.DefaultHighlightColorIndex = wdBrightGreen

 For i = 0 To 2
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 Selection.Find.Replacement.Highlight = True
 With Selection.Find
  .Text = search(i)
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = False
 End With
 Selection.Find.Execute Replace:=wdReplaceAll
 Next i
End Sub

「全て置換」の記録マクロを参考に,ちょっとアレンジしてみた具合です。

Sub Sample1()
 Dim search(2) As String

 search(0) = "abc"
 search(1) = "def"
 search(2) = "ghi"
 Options.DefaultHighlightColorIndex = wdBrightGreen

 For i = 0 To 2
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 Selection.Find.Replacement.Highlight = True
 With Selection.Find
  .Text = search(i)
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True
  .MatchCase = False
  .MatchWholeWord =...続きを読む

Qxlsでもxlsxでもファイル側からWクリックで開けません。

エクセル2007なのですが、3日くらい前から突然ファイルをWクリックで開くことが出来なくなりました。エクセル側から対象ファイルを開くことが出来るのですがXLSでもXLSXでも同様です。メールの添付ファイルなどの場合はとても不便です。どこかに設定があるのでしょうか?教えてください。よろしくお願い致します。

Aベストアンサー

ダブルクリックしたアイコンが、ショートカットだったということはないでしょうか。それでファイル場所が変わったことによって、見つからないとか・・・。

そうでない場合は、こちらの現象ではないでしょうか。
http://miyahorinn.fc2web.com/tips/s_01_02.html
そうでもない場合は、こちら
http://homepage2.nifty.com/winfaq/c/trouble.html#578
参考までにどうぞ

参考URL:http://miyahorinn.fc2web.com/tips/s_01_02.html,http://homepage2.nifty.com/winfaq/c/trouble.html#578

QExcel セル内容を[Ctrl]+[A]で全選択

Excel セル内容を[Ctrl]+[A]で全選択
環境:Windows XP/Excel2000

1つのセルに
ABC
DEF
GHI
と3行入力してあります。
このセルを別のブックのセルに転記したくても結合環境の違いなどでコピーできない場合、セルをダブルクリックしてから内容をドラッグなどしてコピーする方法があります。

しかしこの場合、ドラッグのミスで内容が欠落したり、コピー回数が多いとドラッグが面倒な場合があります。
できれば、セルをダブルクリックの後、[Ctrl]+[A]をしてセル内容を全選択したいのですが、出来ません。

ですので、セルをダブルクリックの後、[Ctrl]+[HOME]の後、[Shift]+[↓][↓][↓]などを考えてみたのですが、これも得策と思えません。
良い方法があれば教えてください。

Aベストアンサー

>回答番号:No.1 この回答へのお礼

失礼しました。
Microsoft Forms 2.0 Object Libraryを参照設定をします。
VBEの画面で、ツール>参照設定 で探してチェックを入れてください。

個人用マクロブックに置けばExcel全てのブックで使用できます。
ショートカットキーを割り当てるか、ボタンをツールバーに置けばよいと思います。

他には、セル間のコピーマクロを組んでもよいかも知れません。
結合状態に関係なく「値」の転記をすることは可能です。

QBook1.xlsとBook2.xlsのエクセルファイルが有ります。

Book1.xlsとBook2.xlsのエクセルファイルが有ります。
VBAを作成しているのはBook2.xlsで操作しています。

Book1 Sheet1
A B C
1 6 4 2
2 8 5 3
3 5 1 4
.

Book1のシートのB列とC列には整数が入力されています。
A列には計算式が入ります。

例)A1の計算式 =B1+C1 A2の計算式 =B2+C2

A列の結果をBook2 Sheet1 のA列に反映しようとした場合に、
以下のVBAだと、計算式のコピーになってしまうので、計算結果の値を反映する事が出来ません。
A列の計算結果(上記の例だと、6,8,5)をまとめて反映させる方法はありますか?

Sub tashizan()

Dim thisBook As Workbook
Dim workBook1 As Workbook

Set thisBook = ThisWorkbook
Set workBook1 = Workbooks.Open("C:\Documents and Settings\Book2.xls")

thisBook.Worksheets("Sheet1").Range("A1:A100").Copy workBook1.Worksheets("Sheet1").Range("A1")

workBook1.Close

End Sub


初心者ですので、宜しくお願いします。

Book1.xlsとBook2.xlsのエクセルファイルが有ります。
VBAを作成しているのはBook2.xlsで操作しています。

Book1 Sheet1
A B C
1 6 4 2
2 8 5 3
3 5 1 4
.

Book1のシートのB列とC列には整数が入力されています。
A列には計算式が入ります。

例)A1の計算式 =B1+C1 A2の計算式 =B2+C2

A列の結果をBook2 Sheet1 のA列に反映しようとした場合に、
以下のVBAだと、計算式のコピーになってしまうので、計算結果の値を反映する事が出来ません。
A列の計算結果(上記の例だと、6,8,5)をまとめて反映させる方...続きを読む

Aベストアンサー

変更前:
thisBook.Worksheets("Sheet1").Range("A1:A100").Copy workBook1.Worksheets("Sheet1").Range("A1")

変更後:
workbook1.worksheets("Sheet1").range("A1:A100").value = thisworkbook.worksheets("Sheet1").range("A1:A100").value



#もちろん,型式を選んで値のみ貼り付ける(の新しいマクロの記録を取る)のでも出来ます。


このカテゴリの人気Q&Aランキング

おすすめ情報