• ベストアンサー
※ 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/17068)
回答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

  • 文字列で範囲指定 Excel2007

    Excelで、セルに記入した文字列で範囲指定する方法を考えているのですが、わかりません。 具体的には、B5セルにC3、B6セルにC7と記入してあります。 そしてB5とB6に書いた文字列で"=SUM(C3:C7)"などとなるように関数を作りたいと思っています。 この方法がわかる方はご教授願います。

  • EXCEL関数での相対範囲指定法を教えてください

    EXCEL(2000)で、関数が参照する範囲を自由に変える方法はないでしょうか? 仕事で、時系列のデータに対する移動平均線が必要になりました。 具体的には、 =AVERAGE(R[-10]C[-1]:RC[-1]) のような関数を同一列にコピーして、左隣の列のデータを順次平均する関数が必要です。 [-10]の代わりに特定のセルの値を入れて、平均値に用いる引数の個数を自由にコントロールしたいと考えています。 =AVERAGE(R[R1C1]C[-1]:RC[-1]) 等と指定しても、エラーになるので、困っています。 よろしくお願いします。

  • エクセルの関数の引数で範囲指定をしたいのですがセル番地の足し算などは出

    エクセルの関数の引数で範囲指定をしたいのですがセル番地の足し算などは出来ないのでしょうか? address関数を使ってみたのですが、文字列として認識される為エラーが出ました。 もしくは文字列をセル番地(範囲指定できる形)に変換することは出来ませんか?

  • エクセル関数の範囲指定を、座標数値で指定したい

    address関数とindirect関数で、行・列を数値で指定して、セルの値が求められますが、同じように行・列の数値を4つ使って範囲の指定をしたいのですが、どのような関数を使えばよいでしょうか? 具体的には、=MATCH(A1,範囲,1)の範囲を、2組の座標の数値で指定したいのです。

  • EXCEL 行と列を指定して、範囲指定する方法

    EXCELの使い方を教えてください。 関数で試みているのですが、以下のような操作を行うことは可能でしょうか? (マクロ(VBA?)は使用したことがないため、抵抗があります。それでも、マクロを組むしかないというのであればその方法も教えてください。) 「表示シート」にて行と列を指定することで、 結合された5行×5列の表を表示させたいのです。 指定するセルも結合させており(「入力シート」)、 結合されたセル(行/列)を指定して、表示する範囲を決めてやりたいのです。 結合を解いて、たくさんの文字を指定する形にしてしまえば楽かもしれないのですが、この2文字だけで他にもたくさん処理させているため、 指定する文字はこの2文字のみで処理させたいです。 自分なりには、「表示シート」のD10セル(F10まで結合されている)に =INDEX(SUMPRODUCT((入力!B3:B27=表示!D4)*(入力!C2:Z2=表示!D3)),1,2) というような関数を組んでみたのですが、うまく表示されません。 なにか、うまく表示させる方法はあるのでしょうか? ちなみに、表内の犬など狐などは便宜的に書いているだけで、 数字が入るセルか、日付が入るセルか、文字列が入るセルかということだけが汲み取っていただければと思います。 入力するセルと表示させるセルの大きさも異なるようにしたいので、 良い方法があれば教えてください。 よろしくお願いいたします。

  • エクセルVBAについてお尋ねいたします。以前、列の検索範囲から指定列中

    エクセルVBAについてお尋ねいたします。以前、列の検索範囲から指定列中の空欄セルが存在した際にその空欄を含む行の削除を実行するマクロを組んだのですが、削除する行の範囲も指定するマクロに組み替えたく望んでおります。 <参照> Private Sub CommandButton1_Click() Dim minRow As Integer Dim maxRow As Integer Dim checkColIndex As Integer ' 初期値1(開始行の値) minRow = 1 ' 初期値2(終了行の値) maxRow = 10 ' 検索列の値(1=A列、2=B列、3=C列...) checkColIndex = 1 Application.ScreenUpdating = False ' 空欄が存在する行の削除処理 For i = maxRow To minRow Step by - 1 ' 指定セルが空欄の場合、その行を削除 If (Len(ActiveSheet.Cells(i, checkColIndex).Value) = 0) Then ActiveSheet.Rows(i).Delete End If Next Application.ScreenUpdating = True End Sub 上記のコマンドを例にすると、 1行目から10行目までのA列に存在する空欄を検索し、空欄が存在したら範囲中の最下(10行目)よりセルを含む行ごと削除・・・ となりますが、この中に <例> ’削除を行う範囲(1=A列、2=B列、3=C列...) ' 開始列値 *** ' 終了列値 *** '範囲内の行を削除 *** など、検索範囲が変わった際にも対応が可能で削除範囲が指定出来るコマンドに変更したく望みます。 宜しくお願い致します。

  • Excel 範囲指定

    例えば、次の関数について。 =COUNTIF(K2:K6,"1") 範囲をK2:K6だけではなく、A2:A6、C2:C6も指定したいのですが、 行や列が飛んでしまうと、うまく範囲指定できません。 どうすれば一緒の範囲にできるのでしょうか?

  • Excel 関数での範囲指定

     Excelでの関数計算は、ほとんど使用した事の無い初心者ですが、もし分かれば教えてください。 あるアプリケーションソフトにパラメーターを投入し実行させるとExcelにて表が出来ます。この表のある列の関連するものを他のある列で指定したものが有るか無いか LOOKUP関数を使用して結果を見ようと思います。しかし、計算を実行するごとに結果を出したい範囲が変わります。簡単に、関数内の範囲指定をする方法は無いでしょうか。    A    B    C    D    E 1  ミカン  100   南      10 2  リンゴ   150   北    15 3  ミカン   200   南      20 4  バナナ   250   南      30 5  ミカン   300   南      55 リンゴ有り 例えば、上のような表が出来今回は、B列の100~200(B列は連続して範囲指定できる)までの範囲を決め A列に「リンゴ」があれば、「リンゴ」とどこかのセルに表示させる。 説明がうまく出来ずわかりにくいかもしれませんがよろしくお願いします。(要は、関数内の範囲指定を他から指定する事は出来ないかなあ)

  • Excel2007で、指定範囲の行高さ及び列の幅を求める式は?

    1行、1列の場合は行や列を指定後、右クリックすれば行の高さや列の幅を選べます。 今の質問はセル範囲を指定した場合、範囲全体の行の高さと列の幅を表示させる式を教えてください。 また、その単位は何でしょうか?行の高さ=24.6と、列の幅=3.5とはそれぞれ何でしょうか?また、印刷時のmmとの対応はどんな関係でしょうか?

  • VBA_選択セル範囲の最小値を求めるプロシージャ。教えてください。

    EXCELVBAの参考書を読んでいて分からないところがあります。 以下は参考書に書いてある内容。 『 1:Sub Position() 2: '選択セル範囲の位置を代入するための変数を宣言する 3: Dim R1 As Long, R2 As Long, C1 As Long, C2 As Long 4: '選択セル範囲の左上の行番号/列番号を求める 5: R1 = Selection.Row 6: C1 = Selection.Column 7: '選択セル範囲の右下の行番号/列番号を求める 8: R2 = Selection.Row + Selection.Row.Count - 1 9: C2 = Selecton.Columns + Selecton.Columns.Count - 1 10: '選択セル範囲の1行下に、各列の最小値を求めるMIN関数の式を代入する 11: Range(Cells(R2 + 1, C1),Cells(R2 + 1,C2)).FormulaR1C1 = "MIN(R" & R1 & "C:R" & R2 "C)" 』 と書いてあり 11行目の説明は、 『"MIN(R" & R1 & "C:R" & R2 "C)" は、「MIN(R」 & R1 & 「C:R」 & R2 「C)」になり、最終的にセルに置きたい式は次のような式です。式の中の「□」と「○」は、変数R1とR2の値、つまり選択セル範囲の上端/下端の行番号です。 =MIN(R□:CR○C) 』とあります。 なぜ=MIN(R□:CR○C)になるのでしょうか?? CRとは行の先頭という意味ですか?? 初心者ですので分かりやすく教えてください。

専門家に質問してみよう