初めての店舗開業を成功させよう>>

通常、Excelで別シートのセルを参照する時は「'シート名'!B3」といった数式になりますが、この「シート名」をユーザーに入力してもらうような仕組みを作りたいと考えています。

・あるシートのA3(例)にシート名を入力すると、B4セルに入力されたシートのB3セルの内容が表示される

このようなこと、可能でしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

INDIRECT関数を使うといいでしょう。



セルA1に入力されたシート名の、セルB3を参照する場合

   =INDIRECT(A1& "!B3")


また上記ではセルB3が固定になってますが、
セルA1 に参照したい【シート名】をいれ
セルA2 に参照したい【セル番地】まで入れておくと
なお、使い勝手がよくなるかも知れませんね。

   =INDIRECT(A1& "!" & A2)
 
 
 
    • good
    • 12
この回答へのお礼

ありがとうございました! 無事解決しました。Excelの関数を覚えておかないとダメですね。

お礼日時:2007/11/26 11:58

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QEXCEL関数でシート名を変数にする。

EXCEL関数で以下の事をしたく色々ためしたり過去の質問も
見たのですが分かりませんので教えてください。

一つのファイル内にシート1、シート2、シート3・・・のシートがあります。
シート3のA1のセルに =変数A1の式を入れたい。
変数A1の意味は、他のファイルのあるセルにシート1かシート2…を
入れておきその値でシート1のA1から値を読むかシート2…のA1から
値を読み込みかという事をしたのですがどのようにすればよいですか?
二つくらいだとif文でも出来るのですが、多数のシートを対象としているので変数で処理をしたいのですがどのようにすればよろしいでしょうか?

=[別ファイル]シート4!A4!A1
のような式で、[別ファイル]シート4!A4のセルに入っているシート名で
読み込むセルのシートを変えたいと言うことです。

分かり辛い説明で申し訳ありません。

Aベストアンサー

これでどうですか?

=INDIRECT("[ブック1.xls]" &[別ファイル]Sheet4!$A$4&"!A"&ROW())

ROW()は数式が入力されている行の行番号を調べる関数です。
1行目でこの数式を使うと1が戻ってきます。
2行目でこの数式を使うと2が戻ってきます。

Qエクセルで他のシートを動的に参照する(シート名だけ)

http://oshiete1.goo.ne.jp/qa921075.html
に「エクセルで他のシートを動的に参照するには」
という質問で

=INDIRECT(A1&"!"&B1)

と入力することで

例えば
a1="いちまいめ"
b1="d5"

と入っていれば

=いちまいめ!d5

と同じ意味に動的に出来るとありましたが

シート名の参照だけを動的にしたい場合はどうすればよいのでしょうか?

ただし
=INDIRECT(A1&"!d5")とすると
上下左右にコピーした際も d5 が
例えば d6 d7 d8 d9 ... と相対的に変わってくれないのでNGです。
また

=INDIRECT(A1&"!"&B1) のままで
b1 b2 b3 b4 b5
にそれぞれ
"d5" "d6" "d7" "d8" "d9" と入れておく
などという、計算エリアを別にもう1つ使うやり方や
A1から参照する以外の汎用性がないもの(例えばrow()なんかを
使うとコレに陥りやすい)もNGです。 

ごちゃごちゃと注文が多い上に解りにくいですがどうぞご教授
下さいませ。

よろしくお願いいたします。

http://oshiete1.goo.ne.jp/qa921075.html
に「エクセルで他のシートを動的に参照するには」
という質問で

=INDIRECT(A1&"!"&B1)

と入力することで

例えば
a1="いちまいめ"
b1="d5"

と入っていれば

=いちまいめ!d5

と同じ意味に動的に出来るとありましたが

シート名の参照だけを動的にしたい場合はどうすればよいのでしょうか?

ただし
=INDIRECT(A1&"!d5")とすると
上下左右にコピーした際も d5 が
例えば d6 d7 d8 d9 ... と相対的に変わってくれないのでNGです。
また

...続きを読む

Aベストアンサー

=INDIRECT(A1&"!"&B"&ROW(A1))
または
=INDIRECT(ADDRESS(ROW(A1),2,,,A1))

=いちまいめ!B1
になります。
上記を下方にずらすとA1がA2,A3と変わり参照先もB2,B3に変化します。

Qエクセル:シート名を手入力でなく、セル「A1」の文字を出したい。

いつもお世話になります。
エクセルのシート名についての質問です。
いつもはシート名を変えるとき、シートタブの上を右クリックして「変更」しています。

◆そこで、
(1) セル「A1」に入力されてある文字を自動で出す
(2) もしくはマクロボタンを押すと「A1」に入力されてあるものが「シート名」として変わる

というようにしたいのですが、その方法について教えてください。よろしくお願いいたします。

Aベストアンサー

こんにちは。


(1)の場合は、下記のコードを ThisWorkbook に記述してください。
どのワークシートでも機能します。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value
End Sub


(2)場合は、下記のコードを標準モジュールに記述しボタンにマクロ登録してください。
(すべてのシートにボタンを貼り付けるのは面倒でしょうから、ツールバーにボタンとして追加すると良いと思います。)

Public Sub SheetName()
ActiveSheet.Name = Range("A1").Value
End Sub

Qエクセルで別ブックのセルを参照する式の内部

エクセルで別ブックのセルを参照する式の内部


別ブックのセルを参照する時は

='パス名[ブック名]シート名'!セル名

という式みたいなので、
='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5
という式を作りました(パスは適当です)。

それで、
='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_02.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_03.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_04.xls]在庫シート'!B5

と日付を連番で複数のセルに入れていきたいので、
日付の 2010_06_01 の部分を他セルから持ってきたいのですが、
この式の中に 文字列参照のMID() とかで挿入できるでしょうか?
日付の入っているセルがちょうど横の方に連番で存在しています。

分かる方いましたら教えてください。
よろしくお願いします。

エクセルで別ブックのセルを参照する式の内部


別ブックのセルを参照する時は

='パス名[ブック名]シート名'!セル名

という式みたいなので、
='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5
という式を作りました(パスは適当です)。

それで、
='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_02.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_03.xls]在庫シート'!B5
='item\zaiko\[zaiko_2010_06_04.xls]在庫シート'!B5

と日付を連番で複数のセルに入れていきたい...続きを読む

Aベストアンサー

=INDIRECT("''item\zaiko\[zaiko_"&A1&".xls]在庫シート'!B5")
とすれば出来ることはできますが、参照先のブックは開いている必要があります。

単に、沢山の数式を入力するのが面倒だというだけであれば、A1のセル以降に日付部分が入力してある場合、
="='item\zaiko\[zaiko_"&A1&".xls]在庫シート'!B5"
のように入力し、下へ数式をオートフィル等でコピーし、
入力した数式範囲を範囲選択→コピー→形式を選択して貼り付け→値でOKし、
範囲選択したまま、編集→置換で検索する文字列「=」、置換後の文字列「=」で置換します。

Qエクセルマクロ 変数をワークシート名で使用したい

Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("1月")
Dim ws2 As Worksheet
Set ws2 = ThisWorkbook.Worksheets("2月")

・・・・これが12月のws12まであります。

これとは別のシート(定義名:data)のあるセルには、数字(1~12)
までを入力し、ここの数字によってdataシートからどの月毎のシートに値を転記するかを
分岐させる仕組みのマクロを作成しようとしております。
※数字が7だったら、7月のws7に転記する。

ここで、変数を用いてできれば良いと思うのですが、うまくいきません。
現状、If .... then, elseif .... thenを12個作る方法しか思い浮かばず、コードの量が
膨大になってしまいます。

うまく分岐させる方法をご教示お願いいたします。
エクセル2003を使用しています。

Aベストアンサー

質問の意味を勘違いしているかもしれませんが、必要なシートのオブジェクトを作れば良いだけでは?

Dim ws As Worksheet
targetsheetname = Worksheets("data").Range("A1") & "月"
Set ws = ThisWorkbook.Worksheets(targetsheetname)

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QExcelマクロ シート名を変数で選択

Excelマクロの初心者です。
シート名が「1月」・・・「12月」のある(変数定義された)部分を
コピー貼付けしたいのですが、
Worksheet(N & "月").Select
の行でコンパイルエラーになります。
何がいけないのでしょうか、ご存知の方教えてください。

Sub
Dim Namae As String
Dim N As Integer
For N = 1 To 12

Worksheet(N & "月").Select
Cells.Find(What:=Namae, LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0).Resize(RowSize:=405, ColumnSize:=4).Select
Selection.Copy

Windows("別ファイル").Activate
Sheets("XXX").Cells(3, 1 + N * 5).Select
Selection.PasteSpecial Paste:=xlPasteValues,
  Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
Next
End Sub

Excelマクロの初心者です。
シート名が「1月」・・・「12月」のある(変数定義された)部分を
コピー貼付けしたいのですが、
Worksheet(N & "月").Select
の行でコンパイルエラーになります。
何がいけないのでしょうか、ご存知の方教えてください。

Sub
Dim Namae As String
Dim N As Integer
For N = 1 To 12

Worksheet(N & "月").Select
Cells.Find(What:=Namae, LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0).Resize(RowSize:=405, ColumnSize:=4).Select
Selection.C...続きを読む

Aベストアンサー

Worksheets(N & "月").Select
「s」がないからでは?

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qセル番号を返す関数

エクセルで、セル番号を返す関数はありますか??
セルの内容ではなくて、番号です。(A1、B3など)
調べてみましたがなかなか見つからなかったので、
わかる方教えてください。
宜しくお願い致します。

Aベストアンサー

文字として"C4"を返す。
=ADDRESS(ROW(C4),COLUMN(C4),4)

式を入力したセルの位置を文字列で返す。
=ADDRESS(ROW(),COLUMN(),4)

ADDRESSの3つ目の引数を変えると
$C$4
$C4
C$4
C4
の4つの形に出来ます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報