質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

4738閲覧

INDIRECT以外のExcel関数のみを用いて、入力欄で指定した行、列番号の値を取得したい

SkyRocket

総合スコア26

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/05/26 02:57

編集2021/05/26 03:05

実現したいことを簡略化し相談させて頂ければと思います。

実現したいこと

添付画像の黄色セルに記載の数式を実現する方法をご教示頂きたいです。
青色のセルは入力欄です。
取得したい行、列(または列番号)を入力し、
その行と列が交わる箇所の値を取得したいです。

数式では、INDEX($B:$B,$D$2)の「$B:$B」の部分を
入力欄の値を参照し動的に用いたいと考えていますが、
INDIRECTを用いると処理が遅くなるため、INDIRECTの使用は避けたいと思います。
「=INDEX($E$5 & ":" & $E$5,$D$2)」では「$E$5 & ":" & $E$5」が文字列の為、取得できません。
「$B:$B」のような列全体(指定1列全体)を文字列参照ではなく、セル参照で取得できればと思っています。

次のことが分かれば解決できます。
指定した列番号、列のアルファベットを動的に、
列全体のセル参照として取得する方法を知りたいです。
例:2または、Bを指定すると、「B:B」をセル参照(配列数列)として取得する

イメージ説明

図で用いた値、数式

値:
メロン アイス
みかん メタル
りんご カーテン
ライオン デスク
コアラ マネー

数式
=INDEX($B:$B,$D$2)
=INDEX(INDIRECT($E$5 & ":" & $E$5),$D$2)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

offset関数を使うなら
=OFFSET(A1,D2-1,E2-1)

という使い方になるかと思います。
第一引数(A1)を基点に、右に第二引数(D2-1)の数だけ移動、
下に第三引数(E2-1)の数だけ移動した先の値を取ってくるという関数ですね。

投稿2021/05/26 05:31

mkk

総合スコア378

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SkyRocket

2021/05/26 05:42

ご回答ありがとうございます。取り急ぎご連絡します。 恐れ入りますが所用がありますので、確認までお時間頂ければと思います。
SkyRocket

2021/05/26 15:28

確認しました。因みに、 INDIRECTを使わず、列番号やアルファベットの入力欄を 元に「A:A」「B:B」をセル参照として動的に取得する方法をご存知でしょうか。
mkk

2021/05/28 00:39

列全体を取得する目的が分かるといいのですが・・・ 単純に質問にお答えするならば =OFFSET(A:A,D2-1,E2-1) で列全体を取得することは出来るかと思います。 セルにこの式だけを入れても使えないので、何かの式に組み込むんですかね?
SkyRocket

2021/05/30 07:54

ご連絡が遅くなり恐縮です。 ありがとうございます。大変参考になりました!
guest

0

=INDEX(A1:B5,D1,E1)

これでいいのでは?

投稿2021/05/26 04:37

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SkyRocket

2021/05/26 05:38

ご回答頂きありがとうございます。 質問させて頂きました内容は、 実際に悩んでいる問題を簡略化したものとなります。 この画像の表の場合は、ご回答頂いたものでも解決できるのですが、 実際に悩んでいるExcelでは指定した行と列の情報のみで、 列番号を動的に数式で参照したいと思っています。 範囲が「A1:B5」の場合、A列の1行目の指定と、 B列の5行目という指定が必要になってしまいます。 列の情報を自動的に取得して、「列番号:列番号」のようにし、 取得する方法を知れたらと思っています。 他の方の回答をもうしばらく待ちたいと思います。
mattuwan

2021/05/26 06:11

>列の情報を自動的に取得して、 例えばどういう感じで取得するんですか? 普通はMatch関数と組み合わせて使います。
SkyRocket

2021/05/26 15:23

入力欄の情報を元に列全体を動的に取得したいと思っています。 例では 「取得対象列(数字)」の入力欄に「2」を入力するか、 「取得対象列(アルファベット)」の入力欄に「B」を入力する と、 セル参照としてB列全体の範囲「B:B」を返せればと思っています。 ※同様に「3」または「C」と入力すれば、「C:C」と返すようにしたいです。
mattuwan

2021/05/26 23:14 編集

>セル参照としてB列全体の範囲「B:B」を返せれば =INDEX(INDEX(A1:B5,0,E1),D1,1) こういうことですかね? いまいちピンと来ない。
SkyRocket

2021/05/30 07:55

ご連絡が遅くなり恐縮です。 ありがとうございます。大変参考になりました!
guest

0

OFFSET関数を使えるのではないかと思います。


今の例だと
=INDEX(OFFSET(A:A,0,E2-1),D2)
のような形です。
ご自身の環境に合わせてアレンジしてください。

投稿2021/05/26 04:02

編集2021/05/26 07:45
jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SkyRocket

2021/05/26 05:25

ご回答頂きありがとうございます。 試してみたのですが、エラーになりました。 試した数式は「=INDEX(OFFSET(A:Z,0など,E2),D2)」などです。 他の方の回答をもうしばらく待ちたいと思います。
jinoji

2021/05/26 21:59

その指定だと列数が複数になるのでエラーになるでしょうね。 =INDEX(OFFSET(A:Z,0,E2-1,,1),D2) =INDEX(OFFSET(A:Z,0,E2-1),D2,1) 行、列の指定が数字なら、いろいろとやり方はあります。 =INDEX(OFFSET(A:A,0,E2-1),D2) =INDEX(A:Z,D2,E2)
SkyRocket

2021/05/30 07:55

ご連絡が遅くなり恐縮です。 ありがとうございます。大変参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問