[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート名を数式に組みこむ』(鉄人)
度々の質問 申し訳ございません 早速ですが教えてください
シートは月の日にち分、1、2,3、30、(31)ありそれぞれ1日であればシート名も1とします
シート1のセル内でその1を数式に組み込みたいんですが可能でしょうか?
説明がわかりずらいかもしれないので例を挙げさせていただくと
A1=(セル名)+B1 といった具合なのですが、、、どうぞよろしくお願いいたします。
(セル名)+B1というのが、どういう表示なのか少し曖昧ですが、
カッコとセル名とB1の値を表示というのであれば、A1="(1)" & B1 とすればよいです。
プラスも必要なら "(1)+" としてください。
カッコもプラスもいらないのなら、A1=1 & B1 です。
シート名を日本語でというのなら、A1="1" & B1 です。
シート名1のB1の値を表示したいのであれば、A1='1'!B1 です。
このなかにご希望の回答はありますでしょうか?(すーさん)
↑すみません説明、それから記入ミスがありました 再度説明させていただきます
過去ログより
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))) ←でシート名を文字列として
指定セルに表示できることは発見したのですが
たとえばそのシート名が数値の場合それをそのままセル内の数式に組み込むことが可能かどうかのしつもんでした
たとえばシート名が1の時、セルA1=シート名+B1といった具合なんですが、、
お助け願います(鉄人)
「Sheet名が1〜31の数字で他のSheetのセル参照をしたい」のですね?
シート3のA1で、=と入力しシート1のB1を選択してEnterで確定すれば
シート3のA1に ='1'!B1 と式が入力され、シート1のB1の値が表示されます。
従って、参照式は【 ='シート名'!セル番地 】とします。
(シニア)
↑説明不足です 申し訳ございません!!
他のsheetのセル参照ではなく、シート名(数字)をそのまま数式に組み込みたいのですが可能でしょうか?
たとえば Sheetが3つ存在し、それぞれシート名を1、2,3とします
各シート内のセルで A1=シート名(つまり1,2,3)+B2 という数式を組み込み シート名+B1に入力される数値を足し算したいとおもいます
上記したように たとえば A1==RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))) と入力したとき はじめのシートのA1セルには "1”と表示されるはずですが この1を数値とし セルないの計算式に組み込むという形です(つまりこの場合 B1の値が4であれば 結果として5が得られるように)
度々、説明を付け加えるような形で大変申し訳ございません
よろしくお願いいたします(鉄人)
何か難しくお考えのようですが、Sheet内の計算にはSheet名は必要なく、他のSheet参照の際に用います。
例シート1のA1セルにシート1,2,3のB1の値の合計は =SUM('1:3'!B1) とします。
(シニア)
シニア様度々申し訳ございません
どうしてシート名に数値を入力し、その数値をそのままシート内のセルで計算する必要があるのか説明させていただきます
(申し訳ございませんがいままでの説明はなかったことにし、↓の例を見てくださいお願いします)
月間のシフト表を作成しています
シート1
シート名:月間 内容: C1=1 D1=2 E1=3 F4 という数値がAG=31 まで入力されていて
AH列には個人名が入力されています(10名の名前があるとします) (A,B列は未使用と考えてください)
A1:AG10ないには各個人の日ごとのシフトパターンが入力されます(A,M,L,S、やすみの場合は空欄)
シート2以降
シート名: シート2は"1" シート3は"2"といった具合でシート名”31”まで存在します
そこでたとえば シート2(シート名:1)のB1セルに "S"という入力があるとして
1日のSに該当する個人名を検出するために A1セルに以下の関数を入力します
=VLOOKUP(B1,1!C1:AH10、32、FALSE) この場合列番号は32でいいでんすが
シート3(シート名:2)だと A1に=VLOOKUP(B1,2!D1:AH10、31、FALSE)というように
CをD、32を31に変更していかなくてはいけません、、 これをシート名の数値を引用してなんとか
自動的に数値をへらすなりなんなりしたいというのが わたしの本当の願望なんですが、、、、
シート名を数値にかえられてもCをDにかえていくっていうのはむずかしそうなんですが、、
なにか他に手があればそれもどうかご教授願います(鉄人)
説明では表に幾つかの問題点が有ります。
@シート1〜31のデータでC列に(A,M,L,S,空白)は複数あれば、VLOOKUP関数では最初の参照値の値を返します。
AVLOOKUP関数の式で '1'!C1:AH10 とデータ範囲を指定していますが、C列の参照値で氏名を検索しているだけです。
D〜AG列の参照値で検索できません。
B各シートで氏名欄が異なる列になっているのは問題です。
改正点として、シート1〜31のA,B列を削除します。AからAE列がデータ(A,M,L,S,空白)でAF列を氏名欄に固定します。
月間シートのA1にシート名を入力します。B1に参照セルを入力します。
A2に入力する式は
=IF(B2=0,"",VLOOKUP(INDIRECT("'"&A1&"'!"&B1),INDIRECT("'"&A1&"'!"&B1&":ah10"),33-COLUMN(INDIRECT(B1)),FALSE))
B2に =INDIRECT("'"&A1&"'!"&B1) と入力すればA1のシート名とB1の参照値からデータを表示させます。
月間シートの表示結果
A B
1 2 B2
2 鉄人 M
A1の2はシート名、B1のB2はA1で指定された参照セル、B2のMはシート2のB2のデータがMである。
A2の式で求めた値、シート名1のB2(M)を参照して、氏名を検索した結果が「鉄人」です。
A2の式はA1、B1の指定で、データ範囲も列数も自動的に変動させてあります。
ただし、指定された参照セルのデータが空白であれば、B2の値は0を返します。
参考にして下さい。
(シニア)
以前に質問されていた同一パターンに複数名あるということで、私なりに考えた方法を
見てもらえますか?
月間シートに次のように登録されていたとします。
A B C AE AF
1 1 2 3 〜 31←日付 名前
2 S1 A1 あああ
3 S2 A2 いいい
4 A3 休み ううう
5 A1 M1 えええ
6 A2 L1 おおお
: : :
10 M5 休み こここ←10名登録
シート1のB2のセルに =VLOOKUP(A2,月間!$A$1:$AF$10,MATCH("名前",月間!$A$1:$AF$1,0),0)
シート2のB2のセルに =VLOOKUP(A2,月間!$B$1:$AF$10,MATCH("名前",月間!$B$1:$AF$1,0),0)
シート31のB2のセルに =VLOOKUP(A2,月間!$AE$1:$AF$10,MATCH("名前",月間!$AE$1:$AF$1,0),0) を指定したら、
シート1には シート2には
A B A B
1 パターン 名前 パターン 名前
2 A1 えええ A1 あああ
3 A2 おおお A2 いいい
4 A3 ううう 休み ううう
5 S1 あああ M1 えええ
6 S2 いいい L1 おおお
このように表示されるようにできたのです。
ただ、シート毎に範囲指定の $A$1 の開始を $B$1 から $AE$1 まで変更しないといけないのが難点です。
でも変更方法としては、シート1を複写で作り、$A$ を $B$ に「すべて置換え」を行なえば簡単に変更できると思います。
これで31枚のシートを作りあげる。
鉄人さんの思っているものと違うかも知れませんが、少しでも参考にしていただければうれしくと思います。(すーさん)
シニアさま すーさん ご協力ほんとにありがとうございます
シニアさま 随分わかりずらい説明で申し訳ございませんでした、excel初心者なもので まだ使ったことの無いような関数↑で (−_−) こんな感じですがホント勉強になります(ただいま↑関数をヘルプで研究中です(笑))
すーさん ↑まさにっていうぐらい私が求めていたものそのものでホント感謝!!!そのまま引用させていただきます
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.