[[20060912184859]] 『シートの一覧表を作るには』(ジュニア) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートの一覧表を作るには』(ジュニア)
20050905144450 を参考にして ブック内のシート一覧を同一ブックにつくろうと
しているのですが上手くいきません。

関数の意味が分かってないのですがコピーして
以下のようにやりました。

 挿入
 ↓
 名前
 ↓
 定義

 で
 名前を
 shtname
 参照範囲を
 =GET.WORKBOOK(1)&T(NOW())

 シート一覧を表示したいシートのセルに
 =MID(INDEX(shtname,ROW()),FIND("]",INDEX(shtname,ROW()))+1,31)

A列にシート名を抽出 ←これは出来ました。

続いてB列に各シートのB7を抽出したく

=INDIRECT(MID(INDEX(shtname,ROW()),FIND("]",INDEX(shtname,ROW()))+1,31)&"!B7")

と入れましたが、#REF! で何も出てきません。

ちなみにB7はBCD列を結合したセルになっています。
結合外してみても何も出てきません。セルには文章が入っています。

スミマセン、教えて下さい!


 こちらですね?
[[20050905144450]] 『シートの一覧表を作るには』(FAS) 
 
 ちなみに、
 =INDIRECT(MID(INDEX(shtname,ROW()),FIND("]",INDEX(shtname,ROW()))+1,31)&"!B7")
 こちらは、どのセル番地に入れましたか?
 仮に、Sheet1 の B7 を反映させたければ、B1 に入力する必要があります。
 こちらを、B1 以外に入力しているのなら、関数を少し変更して
 ROW() → ROW(A1) 2箇所
 としてみるのはいかがでしょう?
 
 (キリキ)(〃⌒o⌒)b

キリキさんありがとうございます。
b2 にいれていました。 B1に入力しても変わりません、、、悲しい。

ちなみに
「リスト」というシートをブック一番左に
その右隣に順に「1組」「2組」、、、、「100組」という名でシートが続いています。
「リスト」と「1組」の間に新しいシートを挿入して「1組」の内容をコピーペースト
したら、リストにその新しいシートのb7が抽出できました。
相変わらず「1組」以降のデータは抽出できません。

何故か分からず、、、


 どうしてだかわかりませんが、、、
 
 >関数の意味が分かってないのですがコピーして以下のようにやりました。 
 との事なので、計算式を分解してみましょ〜b
 
 =INDIRECT(MID(INDEX(shtname,ROW()),FIND("]",INDEX(shtname,ROW()))+1,31)&"!B7")
                     ~~~~~~~
 計算する順番どおりに紐解いてみましょう!
1.shtname
 これは「shtname」という名前を登録した、=GET.WORKBOOK(1)&T(NOW())を計算しています。
 こちらの関数は、特殊ですので省いちゃいますw
 何が返ってくるかというと、「[ブック名]シート名」が返ってきます。
 例えば、Book1 という名前のブックで、Sheet1〜Sheet3 まであるファイルだとすると
 「{"[Book1]Sheet1","[Book1]Sheet2","[Book1]Sheet3"}」というものが返ります。
 これで、こうなります。
 =INDIRECT(MID(INDEX({"[Book1]Sheet1","[Book1]Sheet2","[Book1]Sheet3"},ROW()),FIND("]",INDEX(shtname,ROW()))+1,31)&"!B7")
                                                                       ~~~~~~
2.ROW()
 こちらは、関数が入力してある行番号が返ります。
 B1 に入力であれば「1」
 =INDIRECT(MID(INDEX({"[Book1]Sheet1","[Book1]Sheet2","[Book1]Sheet3"},{1}),FIND("]",INDEX(shtname,ROW()))+1,31)&"!B7")
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.INDEX関数
 INDEX(配列,行番号,列番号)
 配列は、shtname 出だした、シート名。行番号は、ROW関数で出した、行番号。列番号は省略しています。
 上の計算式で考えると、
 {"[Book1]Sheet1","[Book1]Sheet2","[Book1]Sheet3"}
 の中で、左から
 {1}
 番目を返します。
 今回の場合は、"[Book1]Sheet1" が返ります。
 =INDIRECT(MID("[Book1]Sheet1",FIND("]",INDEX(shtname,ROW()))+1,31)&"!B7")
                                        ~~~~~~~~~~~~~~~~~~~~
4.コレは、上とまったく同じですね?
 よって返ってくるものは、"[Book1]Sheet1" ですね?
 =INDIRECT(MID("[Book1]Sheet1",FIND("]","[Book1]Sheet1")+1,31)&"!B7")
                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~
5.FIND関数
 FIND(検索文字列,対象,開始位置)
 検索文字列、"]"。対象、"[Book1]Sheet1"。開始位置は、省略のため先頭より。
 今回の場合で言えば、「7」が返ってきます。
 それに「+1」をしていますので、「8」が返ります。
 =INDIRECT(MID("[Book1]Sheet1",8,31)&"!B7")
           ~~~~~~~~~~~~~~~~~~~~~~~~~
6.MID関数
 MID(文字列,開始位置,文字数)
 文字列は、"[Book1]Sheet1"。開始位置は「8」。文字数は、「31」。
 ここでの、「31」とは、シート名の最大入力可能数量は「半角で31文字」だからです。
 31以上であれば、いくつでもOK。
 よって、ここで返ってくるものは、"Sheet1" になります。
 =INDIRECT("Sheet1"&"!B7")
  ~~~~~~~~~~~~~~~~~~~~~~~~
7.INDIRECT関数
 INDIRECT(参照文字列,参照形式)
 INDIRECT関数は、参照文字列を間接的にセルの指定を行うことが出来ます。
 上記は、「&」で文字をくっつけていますので、
 "Sheet1!B7" を返します。
 それを、INDIRECT関数で間接的にセルを指定しているわけです。
 よって、Sheet1 に入っている、B7 のセル内容を返すわけです。
 
 話を整理しますと、、、
 ROW関数の数字次第で、ブックに入っているシートの「左から何番目」を操作することが出来るわけです。
 
 こちらを踏まえたうえで、もう一度考えてみるとどうなりますでしょうか?
 
 (キリキ)(〃⌒o⌒)b


各シートのフォーマットが悪いのかな、、、
「1組」を新しいシートにコピー貼り付けすればリストシートに反映するんで。

まだしっかり見てませんが、キリキさんありがとう御座います。
今から会議で席を外します。後ほどゆっくり勉強してみます。
有難う御座います!!また書き込みします!!


キリキさんありがとうございました。シート名にスペースが入っているので
読み込めなかったようです。

=INDIRECT("'" & A3 & "'!b7")

こういれたら大丈夫ということだけ分かったのですが、

式の意味が分からず教えてもらえませんでしょうか?
(&って何? ” ’って何 !って何?)


 途中からですが,目的を達成するだけならば,
ブック内のシート一覧を同一ブックのA列に
作るだけのマクロですが。(夕焼)
  マクロを実行すれば一覧が出来上がります。

 Sub シート名一覧()

 wc = Worksheets.Count
 For i = 1 To wc

 Cells(i, 1) = Worksheets(i).Name  ' 1はA列 数値を変えれば別の列に出来ます。
 Next

 End Sub

 >式の意味が分からず教えてもらえませんでしょうか?(&って何? ” ’って何 !って何?)
「&」
・CONCATENATE関数のヘルプ
・[[20060705141758]]『A1のセルの文字とB1のセルの文字を統合したいです』(SO1)
「’」
・[[20060814154532]]『空白文字を含んだシート名の参照方法』(もんた)
「!」
・[[20040919210614]]『関数で・・』(マルコメ味噌)
 
 (キリキ)(〃⌒o⌒)b


キリキさん有難う御座います。
=INDIRECT("'" & A3 & "'!b7")

!は分かりました。

&は結合するんですよね。2つあるんですが何と結合しているんでしょうか?
また、この場合ダブルコーテーション シングルコーテーション がどういう意味を
もっているのでしょうか?


 「’」は、上の通りです。
 sinさんのコメントを見てください。
 
 エクセル君は「”」で、挟んだものを【文字列】として考えてくれます。
 
 >2つあるんですが何と結合しているんでしょうか?
 下記の関数で考えれば、、、
 =INDIRECT("'" & A3 & "'!b7") 
           ~~1  ~~2   ~~~~3
 1 と言う文字列と
 2 に入っているものと
 3 と言う文字列をくっ付けています。
 
 (キリキ)(〃⌒o⌒)b

「'」の意味が良く分からなくて、、、、

=INDIRECT("'" & A3 & "'!b7")

           ~~1  ~~2   ~~~~3
 1 と言う文字列と   ⇔ "にはさまれている ' はいったいどういう意味ですか?
 3 と言う文字列をくっ付けています。⇔'が!の前に位置しているのはどういう意味ですか?


 sinさんのコメントの通りのシート名を作成して、
 sinさんのコメントの通りに作業してみてください。
 
 (キリキ)(〃⌒o⌒)b

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.