• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ある行内で、印をした列からある範囲を指定したい。(Excel2007))

Excel2007で行内の印をした列から範囲を指定する方法

このQ&Aのポイント
  • Excel2007で特定の行内にある印をした列から範囲を指定する方法を教えてください。
  • 範囲を指定するために、印の列の右隣に=column()を入れて_anchorという名前を付けます。
  • その後、average関数やrank関数で使えるように、address関数を使って範囲を指定します。ただし、列の挿入や削除により印の列が移動することや、関数を入れるセルの相対位置がずれることに注意してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

INDIRECT(ADDRESS(ROW(),_anchor+1)&":"&ADDRESS(ROW(),_anchor+6)) のようにしてみてください 記述例: =AVERAGE(INDIRECT(ADDRESS(ROW(),_anchor+1)&":"&ADDRESS(ROW(),_anchor+6)))

qmm
質問者

お礼

おそらく、ADDRESS(ROW(),_anchor+1)&":"&ADDRESS(ROW(),_anchor+6)が文字列なので、その位置をポイントする必要(うまい言葉が見つかりませんが)があるからなんでしょうね。これにて、この質問をクローズします。ありがとうございました。

qmm
質問者

補足

ずばりの回答ありがとうございました。うまく行きました。すばらしい回答でした。address()が文字列であることをうっかりしていました。ただ、その修正だけではだめで、indirect()を使わないとだめなんですね。この解釈をお教え頂けたらうれしいです。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

セル範囲に名前をつけるなら、印をつけた列から印をつけた列+6列までを名前をつければ仕舞いでは。 その範囲に列の追加削除がないなら好都合。 なぜ複雑なことをするのかな なぜADDRESSなんてあまり使わない関数を使うのかな ADDRESS関数はセルを表せても、セル範囲は現せない。 セル範囲を表すのはOFFSET関数だけ。珍しい貴重な関数なのだ。 ーーー 参考 あまり使ったこと無いが、やってみると 例データ A1:C4 aa bb cc 1 4 7 2 5 8 3 6 9 挿入ー名前ー作成ー上端行 これでaa,bb,ccの名前の列が一遍に定義できた。 空きセルに =AVERAGE(aa,cc) といれると 結果 6 になった。 ーー ●この場合のデータ変動等 C列の1セルを空白にしても結果はOK。 B列を列削除しても、上記平均式で、bb列を使ってないので、OK 現有のデータ行の直下にデータ追加も、多目の行指定の名前定義でその範囲内なら、OK

qmm
質問者

お礼

いろいろ試してくださりありがとうございました。ちょっと違うシツエーションで問題が起こっているのです。そして、#1さんの回答で解決しました。imogasiさんの例で言うならば、A2:C2に関して、D2に最高値を、同様にAn:Cnに関して、Dnに最高値を入れたかった(RANKを使って)のです。通常の方法だと、「A3セルにて右クリック→下方向にシフト」とやりますとD3,D4辺りが#N/Aとなります。Excelの余計なお世話でD3の式の中のアドレスを追従させておかしくしてしまうのです。

qmm
質問者

補足

 すみません、お礼のところで、「D2に最高値を...最高値を...」と書いたのは、「D2にA2の順位を...DnにAnの順位を...」でした。  なお、#1さんのご回答で解決したのに、締め切っていないのは、なぜindirectを入れる必要があったのか、お教え頂けるかと期待してのことです。もう少し待ってご回答がない場合は、改めて質問に回そうと思っています。

すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.2

別解です。 =AVERAGE(OFFSET(_anchor,ROW(A1)-1,1,,6))

qmm
質問者

お礼

offset関数を使う手もあったのですね。ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A