誕生日にもらった意外なもの

いつもお世話になっております。
名前の定義で、任意の値が存在する行に名前を付ける方法をご教示ください。

例えば、MAX(F6:F10)の行に'top'と名前を付けるにはどうすれば良いですか。
つまり、6:6、7:7、8:8、9:9、10:10のいずれかの行の名前が'top'となるようにしたいです。

AIによると、INDIRECT()を使って名前の範囲を定義すれば出来るようですが、うまくいきません。
ちなみにExcel2003です^^;

質問者からの補足コメント

  • スミマセン説明文が下手なせいか、私の要望が皆様にうまく伝わっていないようですので、補足させてください。
    このたびの要望は、どこかのセルに'top'と表示させたいのではありません。
    エクセルの、行に名前を付ける機能を使って、任意の行に'top'という名前を付ける方法をご教示ください。
    要望をうまく伝えられるように画像を用意しました。
    この画像では、F6:F10のうち、F6に入力された値が最大ですので、F6が所属する行である行6:6に'top'という名前を手動で付けています。
    これを手動でなく、自動的に最大値が所属する行に'top'という名前が付くようにしたいです。
    最近のエクセルなら、名前の定義の参照範囲の欄にNo.3fujillinさんの式を設定すれば、この要望が実現できると思われますが、私の古いエクセルではその式ではうまくいかないので、他にも方法が無いか検討している所です。

    「任意の値が存在する行に名前を付ける!!!」の補足画像1
    No.4の回答に寄せられた補足コメントです。 補足日時:2024/08/07 02:02

A 回答 (6件)

No3です。



>他に何かうまい方法がありましたらご教示ください。
OFFSET関数で同じことをやっても、同様に可能と思います。
あるいは、元のご質問のようにINDIRECT関数でも可能です。
(↑ Ver 2019 の場合ですが・・)

要領は、No3の回答に示したものとほぼ同じです。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
OFFSET関数の使い方を学習しました。
この関数なら範囲を指定するための引数が別途用意されているので出来そうだと思いました。
本当に的確に私の欲している関数を紹介してくださいます。
しかし結果はうまくいきませんでした。
もしかしたら私の古いエクセルでは、名前の定義の参照範囲で、式を使って間接的にセルを指定する方法をサポートしていないのかもしれません。

単純な式で試してみました。
=Sheet1!$A$1
のように直接にセルを指定したら、セルA1に正しく名前が付きました。
同様にOFFSET()を使って、
=OFFSET(Sheet1!$A$1,0,0)
のように間接的にA1を指定し、いざカーソルをA1に置いても単に'A1'と表示されるだけで、付けた名前は表示されませんでした。

しかし名前の定義ダイアログ中の参照範囲欄は、かなり横長になっていて長い式を入力する事が想定されているようにも思えます。

この参照範囲欄に式を入力するには、何かコツがあるのでしょうか???

お礼日時:2024/08/09 15:08

質問と直接関係ない回答になっていたらスルーしてください。



エクセルの学習をされているとのことで、それ自体はすばらしいことだと思います。
ただ、自分の経験からは、名前を付けることの有用性を見いだせていません。つまり、できなくても困らないということです。(使いこなせていないだけかもしれませんが)
名前の定義よりも優先度の高いものが他にもたくさんあると思いますので、それらの学習後に取り組まれることをおすすめします。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
私も同じく名前を付けることの有用性を見いだせていません^^;

ですから恐縮ですが、このたびはそこまで困っておらず興味本位で質問させていただいております。

ですから仰せの通り、この問題が解決するまで待つ事はせず、すでに先の学習へ進ませていただいております^^

お礼日時:2024/08/10 04:14

F6:F10の範囲に数字が存在するということでしょうか?


でしたら、その隣のE列かG列の6行目に

=IF(F6=MAX($F$6:$F$9),"top","")

と入力し、10行目までコピーすれば
望んだ結果が得られると思います。

MAX(セル範囲)関数 はセル範囲の中で最も大きい数値を返します。
なので、その数値と隣のセルの値が同じだった場合「top」と表示し、
異なる値なら空欄を入れるという条件式です。

また、あまりエクセルに詳しくないようですので補足しますと、
$は「セルの固定化」です。
セルの値を参照した数式を書いた際、数式を入力したセルが動くと参照したセルも同じ分だけ動いてしまいます。
それを回避するために$を列と行どちらにもつける事で参照したセルを固定化しています。
「任意の値が存在する行に名前を付ける!!!」の回答画像4
この回答への補足あり
    • good
    • 0

こんにちは



可変範囲に名前をつけることもあるとは思いますが、ご質問の場合は、さほど有効とも思えません。
普通に、
 INDEX(A6:Z10, 検索行, 検索列)
形式で検索すれば済む話のように思われれます。

また、INDIRECT関数は揮発性関数のため計算負荷が像かする可能性があるので、積極的にお勧めできるものでもありません。
https://learn.microsoft.com/ja-jp/office/client- …


・・・などと、書いているだけでは回答にならないので、
名前の定義の参照範囲の欄に

=INDEX(Sheet1!$6:$10,MATCH(MAX(Sheet1!$F$6:$F$10),Sheet1!$F$6:$F$10,0),)

のような要領で、関数式を設定しておくことで可能と思います。
(シート名は、質問者様の環境に合わせて正しく設定すること)
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
揮発性関数について学習し、エクセルが遅い時には揮発性関数の負荷を調査する事で、解決策を導出できる可能性があると認識しました。
またINDEX()の使い方を学習しました。
INDEX()の仕様によればご提示の式で、意図する範囲が返ると思われます。
しかし、私のエクセルが古すぎるせいか、範囲を返す使い方はサポートされていない感じがします。
試しにINDEX()に任意の行と列を渡すと該当のセルを返すのですが、行を省略するとエラーになり、列を省略すると'0'という謎の値を返します。
INDIRECT()も同様にセル範囲を渡す使い方がサポートされていないから、うまくいかなかったのかもしれません。

他に何かうまい方法がありましたらご教示ください。
m(__)m

お礼日時:2024/08/06 17:40

[No.1お礼]へのコメント、


》 例えば、MAX(F6:F10)の行に'top'と名前を
》 付けるにはどうすれば良いですか。
上記の「行」は「範囲」(または「列範囲」)の間違いであることに気付いてネっ!(^_^)

さて、範囲 F6:F10 に名前 top を付ける方法を3つばかり挙げと
きます
1.範囲 F6:F10 を選択⇒[名前ボックス]内でマウスをツン⇒
 ̄ ̄そこに在る文字列 F6 を文字列 top に上書き⇒Enterキーを
 ̄ ̄パシーッ
2.範囲 F6:F10 を選択⇒[数式]⇒[定義された名前 <名前の定
 ̄ ̄義>]⇒[新しい名前]メニューの[名前]ボックス内に文字列 top
 ̄ ̄を入力⇒[OK]をパシーッ
3.セル F5 (または F11)に文字列 top を入力しておく⇒範囲
 ̄ ̄F5:F10(またはF6:F11)を選択⇒[数式]⇒[定義された名前 <選
 ̄ ̄択範囲から作成>]⇒“上端行”(または“最下行”)にチェック入れ
 ̄ ̄⇒[OK]を憎々し気に「エイヤッ!」と叩き付け
オ・シ・マ・イ

なお、上記の内容が貴方に取って珍紛漢紛なら、上記のコメントはすべて無視してくださいねッ!
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
スミマセンうまく説明出来ていなかったようです。
再度説明させてください。

このたび名前を付けたいのは、F6:F10の範囲ではなく、
6:6、7:7、8:8、9:9、10:10のいずれかの行の名前が'top'となるようにしたいです。

例えば、MAX(F6:F10)の戻り値がF6の値と一致する場合には、行6:6の名前を'top'に、
そうでなくMAX(F6:F10)の戻り値がF7の値と一致する場合には、行7:7の名前を'top'に、
という具合にF6:F10の範囲の状態によって、6~10行目の行の名前を動的に付ける方法をご教示ください。
m(__)m

お礼日時:2024/08/06 10:35

参考までに確認させてください。


「名前の定義で、任意の値が存在する行に名前を付ける」目的は何ですか?

ちなみに、任意の範囲(行全体、列全体でも可)を選択⇒[名前ボックス]内に“名前”を入力⇒Enterキーを憎々し気に「エイヤッ!」と叩き付け
の操作も「名前を付ける」方法の一つです。(^_^)
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
学生の頃に使っていた問題集を引っ張り出してきて、エクセルの再学習をしています。
この問題集は、授業中に先生が解答を提示する想定なのか、模範解答が付いていません。
仰せの通りこの問題集では、自分で最大値を確認して、その行に静的に名前を付ける事を指示しているのかもしれません。
しかし、その場合にはデータを変更した時に、毎回最大値を確認して名前を付け直す必要があるため、もしや動的に名前を変更する方法があるのではと思い、興味本位で色々試していた所です。

お礼日時:2024/08/06 07:26

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

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


おすすめ情報

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