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英語の偏差値を上げるには

こんにちは。高1女子です。
私の学校では、1年から河合模試を受けます。
国語は得意なので、第1回目の偏差値は73、2回目は76、と、それなりに良い成績を取れています。
しかし、英語は55程度しかありません。英語のせいで、国英の偏差値がとても低くなっていて悔しいです。
文系志望なので、英語の偏差値を上げたいです。
どうしたら英語の偏差値を上げることができるのでしょうか?
普段からの勉強法や、模試の対策など、教えていただけると嬉しいです。
よろしくお願いします。

Aベストアンサー

ズバリ答えます。

単語を覚えるよりも長文問題や文法を徹底的にこなす事が得策だと思います。あとは国立か私立志願かわかりませんが、英文解釈と英語構文を徹底的にする事がお勧めです。

単語を覚えたとしても無数にあるので、大学の受験問題を作るサイドで言えば

それよりも文法と構文が大切なんです!!英語の勉強で言えば骨格にあたるものなんです!骨格を太くすることで次は語法や語彙等を徹底的に覚える。これが英語の近道です。骨を太くする事が英語です。国語の場合は古典は暗記で済みますが、英語は暗記が出来ないのです!!

覚えた単語が試験に出る確率は低いのです。逆に文法問題や英文解釈問題、英作文問題が出やすいのです。

対策ですが、早い段階で予備校(できれば河合塾か駿台)、通信教育で言えばZ会、進研ゼミをするのがお勧め。英語で言えばZ会・河合出版・駿台文庫で文法問題や長文問題の本をじっくり解く事をお勧めします!!!

あと模試の偏差値もそうですが、どこが間違えたのかをじっくり見てくださいね。

QExcel関数  A列の値とC列の値の間であればD列の値が抽出される関数

いつもお世話になっております。
F1にある数値を入れ、その数値が一覧表の中の範囲にマッチすればその数値を集計表シートのセルG1に反映したいのです。
例えば
A B C D E F G
1    1 ~ 1000  70 1200 ?
2  1001 ~ 1500  85
3  1501 ~ 2000  92
というような表があるとします。
F1に「1200」と入力するとG1には「85」と出るようにするにはG1にどのような関数を入れたらいいでしょうか。
必要があれば左の数値と~、右の数値は便宜上3列に分けて入力しています。
宜しくお願い致します。

Aベストアンサー

VLOOKUP関数でできます。

求める数値がD列にあるとします。
F1の値を $A$1:$D$3の範囲の左端の列から検索して、D列(検索範囲の4列目)の値を求めます。
セルG1に
=VLOOKUP(F1,$A$1:$D$3,4,TRUE)

一覧表を分かりやすくするために3列に分けているのだと思いますが、
値を求めるだけなら、B列、C列の「~1000」などは不要です。
B列、C列を削除して、「70,85,92・・・」をB列にしておけば
=VLOOKUP(F1,$A$1:$B$3,2,TRUE)
で求められます。

VLOOKUP関数をヘルプで参照していただくとわかると思いますが、
>TRUE を指定するか省略すると、検索値 が見つからない場合に、検索値 未満で最も大きい値が使用されます。
検索値が1200の場合、1200はA列にありませんが、1200未満でもっとも大きい値「1001」に対応する「85」が得られます。

Q「白黒二値」、英語は?

画像を白黒二値化しました。英語で説明をしなければならないのですが、画像の「白黒二値」、「白黒二値化」などの英語の表現法をお教えください。名詞形、動詞形などお教え頂けましたら助かります。よろしくお願いします。

Aベストアンサー

あっているのかどうかわからんが。
http://en.wikipedia.org/wiki/Grayscale
経由で以下の情報にたどり着いた。
http://en.wikipedia.org/wiki/Binary_image

Q【EXCEL】条件付き書式、A列、C列、D列、E列が同じ値の時にB列の背景色を変えたい

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青になると思うのですが実際の結果は画像の通りです。

先の話の通りA列、C列、D列、E列の値が同じ時だけ
B列のセルの背景を青にしたい場合はどうい数式になるのでしょうか?

すいませんが、詳しい方、数式(関数?)で説明できる方よろしくお願い致します。

追記
可能でしたらA列、C列、D列、E列が空白の時はB列の背景色をなしにしたいと思っております。
→A列、C列、D列、E列に値があって、かつ同じ値の場合のみB列の背景を青にしたいです。

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青にな...続きを読む

Aベストアンサー

AND関数を使えば判定ができるのでは?
 =AND(A2<>"",A2=C2,C2=D2,D2=E2)

A列には常に判定する数値が入っているなら「A2<>""」は不要です。

参考サイト
http://www.relief.jp/itnote/archives/003940.php

Q英語で偏差値80を目指すには・・・

現在高2です。英語の偏差値(進研模試)で70前後なのですが、偏差値80あたりをとるにはどのような勉強をすればよいのでしょうか。国立の二次試験(後期)は英語だけなので、いまの偏差値だとぎりぎりです。

Aベストアンサー

偏差値70-80レベルになると大部分の問題は答えられるレベルであとほんの少しわからないものがある状態だと思います。

したがって,自分の苦手な問題は何か良く解析してその部分を徹底的に勉強するしかないと思います。

Qエクセル 関数 1と入力されたセルの隣の列の値から、一つ前に1と入力されたセルの隣の列の値の引き算

1と入力されたセルの隣の列の値から、一つ前に1と入力されたセルの隣の列の値の引き算をしたいです。
具体的に、添付した画像の表で説明します。
A列は、連続した数値が入っています。
B列には、ところどころに、1が入力されています。(空白のセルが多いです。)
C列には、B列で、1と入力されたセル(例:B6)と同じ行のA列のセル(A6)の値から、B列で、一つ前に1と入力されたセル(B2)と同じ行のA列のセル(A2)の値の引き算をしたいです。
いまのところ、C列の結果は、D列にしめしたような計算で、ひとつずつ計算しています。

C列を、自動的におこなってくれるように工夫したいのですが、どんな関数をつかったらよいかわからないので、教えてほしいです。
補足ですが、行の入れ替え(サイズを変える、等)はしたくないです。(列の挿入はもちろんOKです。)

どうぞよろしくお願いします。

Aベストアンサー

D列を作業用に使用します。D列を最終的には見えないように設定してください。(文字色を白にするなど)
D1セルに「=A1*B1」
D2セルに「=IF(B2<>1,D1,A2*B2)」
D3セルより下はD2セルをコピー
C1セルに「=IF(D1=0,"",D1)」
C2セルに「=IF(D1=D2,"",D2-D1)」
C3セルより下はC2セルをコピー

Q極大値・極小値 を英語で

解答でよく、
最大値をMax、最小値をMinと書くことがありますが、
極値も極大値Max、極小値Minと書いてもよいのでしょうか?

英語では同じですが
これがよいのだとすると
極値も最大値・最小値も求める問題のときに混乱してしまう気がします。

わかりやすく納得できる説明が欲しいです。
よろしくお願いします。

Aベストアンサー

私が採点するときに極大・極小のところを《Max・Min》を使ってたら、【ホントに理解してますか?】とコメントを入れます。
そして【人に見せる解答に略語を使うのは避けたほうがいいです。】とも書きます。
(特にこの場合、【Max,Min】は最大値・最小値に対して使うことが多いのです。)

私は《減点したくなる》のですが、実際減点するのは数学的ではないと思うので、もちろん解が当たってれば正解にします。
(かなり矛盾があるかもしれませんが)数学的に理解していればどう書こうが普通は許してくれると思います。
ただ、解答を書くときには、見せる対象の人が納得できるような形にすべきだと考えます。
だから略語を使うのは避けるべきなのです。

(ただ私が言った【Max ×】は当然意味はわかりますが、数学的に許されない行為だと思うのです。)

Qあるセルの値を別のセルを参照する際の行番号や列番号として使用したい

あるセルに入っている値を別のセルを参照する際の行番号や列番号として使用したいのですが、可能でしょうか?

たとえば、A1に10、A2に20と入っていたら、10行目の20列目の値を取得するようなことがしたいです。

マクロを使えばできそうですが、マクロを使わずにできる方法があれば教えてください。

Aベストアンサー

=INDIRECT(ADDRESS(A1,A2))
でいかがでしょう?

Q偏差値40英語・・・

私は本当に英語が出来ません。
というか、勉強の仕方がわかりません。

楽な方法じゃなくて良いので、英語が出来るようになる方法を教えて下さい。出来れば偏差値60の大学でトップのレベルになりたいです。

今は単語の覚え方も分からない、文法も分からない、短い文も読めないので長文なんて読めないってかんじです正直(笑)

何だか英語が不得意で、他の科目は偏差値65英語は40もいかないという感じです笑
原因は嫌いだからということもあるでしょうが、私が理系の頭なので、根本的に英語というものの勉強法が分かっていなくてだめなのかな?と思い質問させていただきました。

今高3です!

Aベストアンサー

おお、俺ガイル(笑)
つい先日、似たような質問をした者です。
私の場合、偏差値はあなたのより低い36でしたけど。
http://oshiete.goo.ne.jp/qa/8469327.html
以下は、あくまで「英会話ができるようになるためのお勧めの勉強法」であり、「受験で合格するためのお勧めの勉強法ではない」のですけど、それでもよろしければ。

私の場合、解決策としては「思い切って留学する」でした。

現実問題として留学するのが難しいのなら、
洋画を英語音声で観る。最初は字幕なしで。次には英語字幕付きの英語音声で。そして、その後は『観ない』。という勉強法がいいですかね。

NHKの教育番組(Eテレ)でやってる「プレキソ」という英語番組もいいですよ。
本来は子供向けの英語番組なんですが、日本語がまったく出てこないので、教材としては最適です。
英語ができない友人にまったくのボランティアで英会話の個人レッスンをしてるのですが、私は教材にこの番組を使っています。

とにかく、日本語が出ちゃダメなんです。日本語が出るとどうしても日本語に頼ってしまいます。脳が日本語の思考になってしまうので、英語での思考がいつまで経ってもできないんですよ。
英語で入ったものをそのまま英語で処理するんです。いちいち日本語に翻訳しない。そしていちいち辞書を引いて意味を確認しない。これが重要です。

人間は取り入れた情報を脳が処理しようとします。
食べ物だと食べやすい物を好むように、人間の脳は、処理しやすい情報を好んで処理しようとします。なので日本語が入ってくると、英語での情報を捨ててしまって日本語に頼りっぱなしになります。
なので(余談ですが)「スピードラーニング」。あれの効果については私は甚だ疑問に思いますね。英語の後で日本語の解説がつく。それが余計です。
全部英語の、解説は無し、の方がよっぽど効果があると思います。

また、最近では安価でスカイプを利用したインターネット英会話レッスンもあります。
そういうのを利用するのもいいのではないでしょうか。
私もまだ利用していませんが、近いうちに始めようかな?と思ってます。
私は「自分が英語を教わる代わりに、自分が日本語を教えるからレッスン代はタダ」ってサイトを利用しようか?と考えています。
http://www.e-kaiwa.net/

ああ、私が書いたのはあくまで「中3レベルぐらいの英語力はある」ということ前提です。
関係代名詞や受け身までは理解できた、というぐらいですね。
「I my me ってなんですか?」や、「be動詞ってなんですか?」レベルだと英語だけ聴いたとしても英語力の上達は見込めませんので、ラジオの基礎英語講座等を利用して、レベルの底上げをして下さい。

おお、俺ガイル(笑)
つい先日、似たような質問をした者です。
私の場合、偏差値はあなたのより低い36でしたけど。
http://oshiete.goo.ne.jp/qa/8469327.html
以下は、あくまで「英会話ができるようになるためのお勧めの勉強法」であり、「受験で合格するためのお勧めの勉強法ではない」のですけど、それでもよろしければ。

私の場合、解決策としては「思い切って留学する」でした。

現実問題として留学するのが難しいのなら、
洋画を英語音声で観る。最初は字幕なしで。次には英語字幕付きの英語音声で。そし...続きを読む

Q(COUNTIFS ?)B列に任意の値があり、D列からF列の間にも任意の値がある場合に値を返す関数式

会社で修理業者に物品の修理を依頼する仕事をしているのですが、修理の際に出張費がかかる場合があり、余計な出費を避けるため、エクセルで素早くチェックできるようにしたいと思っております。

添付ファイルのとおり、任意の行のB列と同じ値が他の行のB列にあって(業者名が同じで)、かつ、その行の修理日・修理日2・修理日3のいずれかの値から前後6日以内の値が他の行において修理日・修理日2・修理日3にあった場合に、G列に「調整」という文字が入るようにしたいと思っております。

どのように関数式を組めばよいのか、どなたかご教授願います。

Aベストアンサー

VBA で良かったでしょうか?
ダメならスルーということで

処理範囲の行は A3 ~ A列データのある行とします
行の範囲を求めたら、B列 ~ F列を配列に読み込みます
(C列は非表示?)
修理業者をベースに Dictionary にデータを覚えていきます
Dictionary は3段構成
1段目キー:修理業者名
2段目キー:行番号
3段目キー:日付

Dictionary に展開できたら、
各修理業者の異なる行番号での日付差をグルグルチェックしていきます

※ B列 ~ F列を読み込んだ配列 vA は、
Dictionary に覚えたら不要になるので、
vA の1列目を結果書き出し用に再利用しています


Public Sub Samp1()
  Dim dic As Object
  Dim vA As Variant, vK As Variant
  Dim vRp As Variant, vRc As Variant
  Dim vDp As Variant, vDc As Variant
  Dim i As Long, j As Long
  Dim bSkip As Boolean
  Const CDAYW As Long = 6
  Const CMOJI As String = "調整"

  Set dic = CreateObject("Scripting.Dictionary")

  With Range("A3", Cells(Rows.Count, "A").End(xlUp))
    vA = .Columns("B:F").Value
    For i = 1 To UBound(vA)
      If (vA(i, 1) <> "") Then
        For j = 3 To UBound(vA, 2)
          If (vA(i, j) <> "") Then
            If (Not dic.Exists(vA(i, 1))) Then
              dic.Add vA(i, 1) _
                , CreateObject("Scripting.Dictionary")
            End If
            If (Not dic(vA(i, 1)).Exists(i)) Then
              dic(vA(i, 1)).Add i _
                , CreateObject("Scripting.Dictionary")
            End If
            dic(vA(i, 1))(i)(vA(i, j)) = Empty
          End If
        Next
        vA(i, 1) = ""
      End If
    Next

    For Each vK In dic.Keys
      For Each vRp In dic(vK).Keys
        If (vA(vRp, 1) = "") Then
          bSkip = False
          For Each vDp In dic(vK)(vRp).Keys
            For Each vRc In dic(vK).Keys
              If (vRp <> vRc) Then
                For Each vDc In dic(vK)(vRc).Keys
                  i = Abs(DateDiff("d", vDp, vDc))
                  If (i <= CDAYW) Then
                    vA(vRp, 1) = CMOJI
                    vA(vRc, 1) = CMOJI
                    bSkip = True
                    Exit For
                  End If
                Next
                If (bSkip) Then Exit For
              End If
            Next
            If (bSkip) Then Exit For
          Next
        End If
      Next
    Next
    .Columns("G").Value = vA
  End With

  Set dic = Nothing
End Sub

VBA で良かったでしょうか?
ダメならスルーということで

処理範囲の行は A3 ~ A列データのある行とします
行の範囲を求めたら、B列 ~ F列を配列に読み込みます
(C列は非表示?)
修理業者をベースに Dictionary にデータを覚えていきます
Dictionary は3段構成
1段目キー:修理業者名
2段目キー:行番号
3段目キー:日付

Dictionary に展開できたら、
各修理業者の異なる行番号での日付差をグルグルチェックしていきます

※ B列 ~ F列を読み込んだ配列 vA は、
Dictionary に覚えたら不要になるので、
...続きを読む


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

人気Q&Aランキング