
詳しい方教えてください。
前任者のファイルの作成で、どうしてもわからない部分があり、皆さんのお知恵を貸して頂ければと思います。
Excelで例えばA列に、【1,2,3・・・】と連番で番号をふられています。しかし、式が入っており
@offset(indirect(address(row(),column())),-1,0)+1
となっています。
address(row(),column())
はそのセルの行と列の番号を絶対参照(例えば、$D4$ など)を返す
indirect関数で、address関数で参照しているセル(例え、D4セルに100が入力していたら100を返す)
新しいExcelファイルで
@offset(indirect(address(row(),column())),-1,0)+1
を入力するとエラーになってしまいます。前任者のファイルでは【1,2,3・・・】と連番になります。
@offset(indirect(address(row(),column())),-1,0)+1
この意味は、address(row(),column())のセルの一行上の数値に1を足す?
という意味でしょうか。。。。
前任者はおらず、今までこのファイルを使っていた人に聞いてもきっと、前の人が使っていたからそのまま使った、意味はわからない、といわれて終わりです。
こんな仕事の仕方でいいのだろうか、と不安になります。
100%理解出来なくてもある程度理解して使いたいと思っています。
詳しい方、教えていただければと思います。
No.1ベストアンサー
- 回答日時:
row() は、式の書かれている行。
column() は、式の書かれている列。
address(row(),column())
は、式の書かれているセルアドレスを示す文字列。
indirect(address(row(),column()))
は、addressで作られたセルアドレスの文字列を、セル参照にする。
offset(indirect(address(row(),column())),-1,0)
は、indirectで作られたセル参照の、-1行下、0列右のセルに書かれている値を取得。
⇛数式の書かれているセルの1個上のセルの値
で、最後に+1してる。
で、この式を入れてエラーになるとはどういうエラー?
そこが重要なんだけど。
1行目に書いていれば、上のセルが存在しないのでエラーになる。
上のセルが文字であれば、文字に足し算ができないのでエラーになる。
とか、そういうことなんだろうか。
回答ありがとうございます。
もう一度試してみたら、エラーが出ずに、【1,2,3・・・】と表示されました。
普通に【1,2,3】と入力してオートフィルした方が早いような気がするのですが、何故このような難しい式を使っているのかが不明で質問させていただきました。
何か式を使うメリットがあるのでしょうか。。。
No.5
- 回答日時:
[No.2お礼]へのコメント、
》 行の削除や挿入をしても、再度オートフィルで
》 連番を振らなくてもいいと言うことですね。
そりゃ言い過ぎかと。だって、「挿入」された行には自動的に数式が入力されるわけがないので。
1行目あるいは行番 1 の開始セルの直上のセルには、数値 0 を手入力して、添付図に示す書式を設定して知らぬ顔を決め込むのが鯔背(イナセ)かもね。(^_^)

No.4
- 回答日時:
メリットは幾つかありますが、特に重要なのは開始行から連番へと
設定ができることですね。
連番の開始行より上にある行で、行挿入や行削除をした場合に、
オートフィルでは影響はありませんが、ROW関数を使った連番に
した場合は、開始番号が崩れます。
https://sun0range.com/microsoft-office/excel-tips/
連番のある範囲の行を削除した場合は、オートフィルでは連番に
ならなくなるので、質問にある式のほうが有利です。
開始番号を手入力などで指定しても使えるのもメリットですね。
デメリットは、連番の上のセルに文字列がある場合に#VALUE!の
エラーになることと、1行目から使うと#REF!のエラーになるので、
上のセルを数値にしたり、空白セルなどにすることで、エラー回避
させることができるので対応も簡単ですね。
行の追加や削除が多いシートならば、この式は特に力を発揮する
連番機能です。
No.3
- 回答日時:
なぜこんな面倒くさい式なのか?
という疑問について。
想像ですが、この式が使われているエクセルファイルって
行単位で編集することが多かったりしませんか?
・行単位で削除
・行単位でコピー→挿入
・行単位で切り取り→挿入
とか。
こういう編集をした場合に、確実に「式の書かれたセルの1つ上のセル」を参照させることができる式になってるんですね。
=offset(indirect(address(row(),column())),-1,0)+1
=[上のセル]+1
というセルを並べて書いて、下へコピーしてみて、
行単位での編集を試してみれば、違いがわかると思います。
行単位の編集を行った都度、オートフィルして番号振り直すのも面倒くさいし、し忘れちゃうってこともありえるじゃない?
そういうことを考慮して自動化でこの式を採用したんだと思う。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 、この式はどのように解釈すればいいのでしょうか 4 2023/02/03 08:53
- Excel(エクセル) Excel この式はどんな意味でしょうか。。。 4 2023/01/14 22:30
- Excel(エクセル) substitute関数についての質問です 3 2023/06/21 11:57
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Excel(エクセル) エクセルで値ではなく関数を参照する方法 6 2023/03/19 00:50
- Excel(エクセル) Excelでこの式の意味をおしえていただけますでしょうか、またどのように理解したらいいのでしょうか 3 2022/11/18 00:11
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) A、B、C・・・AA、ABと連番でふりたい、調べても式の意味がわからずパニックになってしまう 1 2023/01/23 19:17
- Excel(エクセル) AVERAGE関数とINDIRECT関数を使ってのオートフィル 3 2023/01/12 12:00
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUMIF関数で、「ブランク以外を...
-
excelで、空白を除いてデータを...
-
自分の左隣のセル
-
文字列から英数字のみを抽出す...
-
EXCELのcountif関数での大文字...
-
セルを結合した時のエクセル集...
-
エクセル1行おきのセルを隣の...
-
エクセルで特定のセル内にだけ...
-
同一セル内の重複文字を削除し...
-
EXECL バーコード生成でBarCode...
-
【Excel】4つとばしで合計する方法
-
EXCEL-同じ組み合わせになった回数
-
EXCELでマイナス値の入ったセル...
-
スプレッドシートの作業範囲
-
エクセルで、指定の値よりも大...
-
文字数のカウントと平均数の算出
-
=SUBTOTAL に =COUNTIF の機能...
-
エクセルで、A2のセルにA3...
-
週の労働時間を計算するエクセル
-
エクセル関数/任意の桁数の数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字列から英数字のみを抽出す...
-
自分の左隣のセル
-
SUMIF関数で、「ブランク以外を...
-
excelで、空白を除いてデータを...
-
セルを結合した時のエクセル集...
-
EXCELのcountif関数での大文字...
-
エクセル1行おきのセルを隣の...
-
エクセルで特定のセル内にだけ...
-
エクセルで、指定の値よりも大...
-
エクセルで、A2のセルにA3...
-
同一セル内の重複文字を削除し...
-
週の労働時間を計算するエクセル
-
【Excel】4つとばしで合計する方法
-
条件付き書式の色付きセルのカ...
-
EXCELでマイナス値の入ったセル...
-
エクセルで年月日から月日のみへ
-
エクセルでエンターを押すと任...
-
エラー「#REF」の箇所を置き換...
-
EXCEL-同じ組み合わせになった回数
-
Excelで日付が入っていたら金額...
おすすめ情報