ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

Excel セルの指定に関して質問です。
セルの値で列(行)を選択するにはどうするのでしょうか?
例えば B5に "3"が入っていたらC列(C4セル)、"4"が入っていたらD列(D4セル)
を参照するというような具合に、ある特定のセルの値によって参照する列を変えたいのですが。
R1C1形式中にセルの参照をさせれば可能になりそうですが記述方法が分かりません。
よろしくお願いします。

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

A 回答 (6件)

こんばんは!


質問内容を取り間違えていたらごめんなさい。

=INDEX(Sheet2!$A$1:$K$35,ROW(G3),F2)
のような数式は希望通りにならないでしょうか?
(数式の $A$1:$K$35 は適当に範囲指定していますので、表によってアレンジが必要かと思います)

この意味は「範囲指定した表の中の3行目のF2で示した列の値を返します」という意味です。
行・列とも数値なら問題なく行と列を拾い出してくれますが、文字列なら一工夫必要です。
↓に似たような質問(←私が勘違いしているかもしれませんが・・・)があったので
URLを貼り付けておきます。
参考になれば幸いです。

http://oshiete1.goo.ne.jp/qa4950396.html

的外れの回答なら読み流してくださいね。m(__)m
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありません。
教えていただいた INDEX関数と ROW関数でできました。
=IF(INDEX(Sheet2!$C$3:$N$33,ROW()-4,$F$2)<>"","ABC", ・・・
というような感じで、Sheet2のC3:N33の範囲の中のセルを参照し
そのセルが空でなければ"ABC"という文字を入れるというような
処理ができました。
INDIRECT関数のほうは、最初に試してみて概念がつかみづらかったので
出来るかもしれませんが、深追いはしませんでした。
お教えいただいたのに申し訳ありません。
書き込みくださった皆様に感謝申し上げます。

お礼日時:2009/05/14 10:08

=IF(Sheet2!G3 = "","ABC",・・・



この式の「Sheet2!G3」この部分を書き換えたいって事かな?
であるならば、先に回答したものを元にすると

=IF( INDIRECT("Sheet2!"&ADDRESS(ROW(),F2)) = "","ABC",・・・

という感じになります。

> ROW()

これは、この関数の書かれているセルの行番号となります。
    • good
    • 0

一例です。


=INDEX(4:4,,B5)
    • good
    • 0

B5セルに列番号が入っていて、その列の4行目を参照するのですよね。



=INDIRECT(ADDRESS(4,B5))


> ADDRESS(x,y)

x行目、y列目 のセルアドレス
ADDRESS(4,B5) ならば、4行目 [B5に入力された数字]列目のセルアドレスとなります。

> INDIRECT(zz)

セルアドレス「zz」の内容を参照します。

この回答への補足

早速の書き込みありがとうございます。
もう少し補足させて下さい。
現在は、例えば Sheet1 の F2に 列に関連した値が入っており
この値で Sheet2 の 列を選びます。
Sheet1のC列には、このSheet2の選ばれた列の同じ行を参照した関数を
入れたいのです。
例えば Sheet1の C3には以下のような関数が入っています。
=IF(Sheet2!G3 = "","ABC",・・・
のような感じで、Sheet2のセルG3の G列を Sheet1のF2(=5)の値で指定し、
行はそのまま同じ 3行目のセルの値によって判断したいと思っています。
よろしくお願いします。

補足日時:2009/05/11 17:58
    • good
    • 0

=OFFSET(A4,0,B5-1)


とか?(エラー処理等なし)
    • good
    • 0

=IF(B5=3,C4,IF(B5=4,D4,""))


こうかな?
    • good
    • 0

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

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

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

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

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

Qある列を比較して、一致する場合に、それとは別のセルを比較し結果表示する

標記件名のことを実行したいです。
文章のみでは伝わりづらいと思いますので、添付ファイルをごらんください。

よろしくお願いします。

Aベストアンサー

こんばんは!
一生懸命画面を拡大して文字を読み取ろうとしたのですが・・・
はっきり判りませんでした。

憶測で回答しては失礼なのですが、
多分別シートに表があり、その列と行の項目が交差する文字列(値)を返したいということだと思います。

その方法の回答ということにさせてもらって・・・

一例ですが、
↓の画像で数式を作ってみました。(下側がSheet2になります。)

Sheet1のC2セルを
=INDEX(Sheet2!$B$2:$E$5,MATCH(A2,Sheet2!$A$2:$A$5,0),MATCH(B2,Sheet2!$B$1:$E$1,0))
としてオートフィルで下へコピー!
これでどうでしょうか?
(数式は表の大きさによってアレンジしてくださいね)

多分希望に近い形の物が出来ると思います。
尚、的外れの回答なら読み流してください。m(__)m

Qエクセルの関数で,たとえばB15のセルの値を返すには?

エクセルの関数の質問です。

たとえば,
A1のセルに7
A2のセルに8
が入力されているとします。

ここで,少し回りくどいのですが,
A1(の7)と,A2(の8)と,関数などを使って,
あるセルに,B15のセルの値を返したいのですが,
可能でしょうか?

間違ってますが,
=B(A1+A2)
のような式を書きたいのですが…。


あっさりと,
=B15
とすればいいのはわかっていますが,
やむえない事情がありまして…。

よろしくお願いします。

Aベストアンサー

=INDIRECT("B"&A1+A2)
で良いと思います。

Qエクセルでセルの値を数式の範囲として使うには?

タイトル通りなのですが、エクセルでセルの値を数式中で範囲として使うにはどうすればよいのでしょうか?

例えばA1セルに「1」という値が入っており、B2セルに「10」という値が入っているとします。この時、数式中で、「A1」と「B2」を用いて、「E1からE10まで」を指定することは可能でしょうか。可能でしたらどのような数式を組めば良いのでしょうか? よろしくお願いします。

Aベストアンサー

(1)タイプ1
セル範囲を(見かけは文字列で)入れるタイプの関数の場合
見かけで、普通に文字列で、手作業でセルに式を入れるような番地文字列を作ります。
A1に2、B1に10が入っているとします。
例えば D5に ="A"&A1&":B"&B1
するとD5は A2:B10 となります。
関数を手から入れるときは=SUM(A2:B10) ですから
=SUM(D5) で良さそうですが、そうは行きません。
エクセルに番地として解釈してくださいよ、という意味で
=SUM(INDIRECT(D5))
とします。
これで結果11
(A2:B10に
A列  B列
51
6
しか、入っていないときの例)になります。
(2)タイプ2
結果的に範囲を対象にしますが、列や行(の隔たり)の数などを引数に、それぞれ独立して数として入れるタイプの関数の場合
例OFFSET関数
=SUM(OFFSET($A$1,1,0,9,2))

=SUM(OFFSET($A$2,0,0,B1-1,A1))
セルの値をそのまま数字として考えればよい例。
この場合数の変わりにセル番地を入れると良い。

(1)タイプ1
セル範囲を(見かけは文字列で)入れるタイプの関数の場合
見かけで、普通に文字列で、手作業でセルに式を入れるような番地文字列を作ります。
A1に2、B1に10が入っているとします。
例えば D5に ="A"&A1&":B"&B1
するとD5は A2:B10 となります。
関数を手から入れるときは=SUM(A2:B10) ですから
=SUM(D5) で良さそうですが、そうは行きません。
エクセルに番地として解釈してくださいよ、という意味で
=SUM(INDIRECT(D5))
とします。
これで結果11
(A2:B10に
A列  B列
51
...続きを読む

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エクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

QExcelで関数の参照先をセルの値で指定するには?

Excel2000を使用しています。
関数が参照するセルを指定する場合、例えばSUM、のとき。
セルA1には"B1"と入力されており、
同様にセルA2には"B5"が入力されていたとして(もちろん " は実際には入力されてません)、
この セルA1 と A2 のテキストデータを参照して、SUM(B1:B5) を得るにはどのように範囲を指定したらよいのでしょうか?

別にセルA1 と A2 が "B1" 及び "B5" でなくてそれに代わるものでも構いません。
要は関数が参照するセルをほかのセルの値で指定したいのですが。

Aベストアンサー

これでできそうです。
合計を出したいセルに以下を入力します

=SUM(INDIRECT(A1):INDIRECT(A2))

するとA1、A2に入っているセル番地を参照して計算してくれるはずです。
わたしが試したらできました(EXCEL2002)

Q最大値のあるセルの行番号のみを求めたいです。

エクセル2000を使用しています。
OSはXP HOMEです。
よろしくお願いします。

下のようになっているとします。
そこで二つの質問をさせていただきます。



    A        B    C
1    13
2    10
3    64
4    50
5    12

B5にA1:A5の最大値の行番号を表示させるには関数を用いてどのようにあらわせばよいでしょうか?
※上記の例ですとB5には「3」が表示されるはずです。

また、C5にはA1:A5の最大値が示されているセルの行番号からどれだけ隔たりがあるかを表示させたいと思います。
※上記の例ですとC5の行番号は「5」最大値のセルはA3ですので、行番号は「3」。
「5-3=2」となりC5には2が表示されるはずです。


お分かりの方がいらっしゃいましたらお願い申し上げます。

Aベストアンサー

B5の式は
=MATCH(MAX(A1:A5),A1:A5,0)
でしょうね。


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

人気Q&Aランキング