- ベストアンサー
エクセルのOffset関数に詳しい方
エクセルのOffsetでのセル移動についてですが、Offsetで移動した後、セルが画面の 範囲を超えた場合、エラーになってしまいます。 1行目より上には行けないですし、A列より左には行けないといった具合です。 このエラーを回避して、「行けるところまで行く」、つまり、1行目より上が指定されてしまった場合は1行目にセルが移動するような動きはできませんでしょうか? ご存知の方、お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
例えばA1セルから下方にデータがあって、B1セルに次の式を入力して下方にオートフィルドラッグすればB1セルにはエラーが表示されますね。 =OFFSET(A1,-1,0) そこで1行目(B1セル)についてはA1セルのデータを表示したいのであれば次のような式をB1セルに入力して下方にオートフィルドラッグすればよいでしょう。 =IF(ISERROR(OFFSET(A1,-1,0)),A1,OFFSET(A1,-1,0))
その他の回答 (4)
- MARU4812
- ベストアンサー率43% (196/452)
http://qanda.rakuten.ne.jp/qa7126576.html 回答者が「Offsetメソッド」っていっちゃってるからなぁ。。。 プロパティが正しいです。 質問文に >セル移動について とあるから、前質問の Select の続きだと思われます。 VBA の話でしょう。
お礼
ありがとうございました!!
- D-Matsu
- ベストアンサー率45% (1080/2394)
OffsetはRangeクラスの"プロパティ"であって"関数"ではありません。 それはさておき、そのような挙動を示す場合があるならOffsetを使わないことも考えた方がいいかと。 #2の変形のような感じですが、 Dim r as long, c as long r = ActiveSheet.ActiveCell.row c = ActiveSheet.ActiveCell.column ActiveSheet.Cells(WorksheetFunction.Max(r - 20, 1), c).Select のように、「最大移動後と端」でMaxもしくはMinを取ってCellsで直接指定する方が見た目にもわかりやすいんじゃないかなーとか。
お礼
ありがとうございました!!
- imogasi
- ベストアンサー率27% (4737/17069)
不用意にはOFFSETは使えないということです。 だから左列へずらすときの、Offsetを取るとき、そういう可能性があるなら、ずらして考えた結果が1より大になるか、AND、制限列番号より小さくなるか計算してチェックする、コードを入れるだけでしょう。 わたしはOffset(0,1)などのコードを回答で書くときがありますが、安全だという暗黙の仮定で書いているわけで、そういうのは 色んなケースで理論的にはありえるが、まあ考えなくて良い場合と仮定しているわけ。 プログラムを造る人とは別の人が操作する・指定するようなときは、限度チェックを入れないといけないし、入れるだけ。 そのチェックは1行のコードである必要は無いし、1行に拘るのがおかしい。その前のコード行でチェックすれば仕舞い。 何を聞いているのか、なぜ聞くのか必要性が判らない。 下方向だけ、2003までの例で言えば Sub test01() Set x = Range("C3") y = InputBox("整数") x.Offset(WorksheetFunction.Min(65536 - x.Column, y), 0).Select End Sub のようなことを考えているのか。
お礼
ありがとうございました!!
- MARU4812
- ベストアンサー率43% (196/452)
移動前のセルの Row, Column から計算すればいいだけかと。
お礼
ありがとうございました!!
お礼
ありがとうございました!!