
各セルの左側にある 2 つのセル間のキロメートル単位の差を計算する次の数式が各セルに入力された列があります。
=IF(AND(INDIRECT(ADDRESS(ROW(),COLUMN()-2))<>"", INDIRECT(ADDRESS(ROW(), COLUMN()-1))<>""), INDIRECT(ADDRESS(ROW(),COLUMN()-1))-INDIRECT(ADDRESS(ROW(),COLUMN()-2)), "")
私の問題は、既存のデータの間に新しい行を挿入するたびに、その行のすべてのセルが空になり、空のセルにこのコードを手動で入力する必要があることです。
列内のすべてのセル(ヘッダーを除く)を特定の数式に設定することは可能ですか?新しい行を挿入しても?
列をテーブルとして設定しようとしましたが、新しい行を挿入するたびにセルが自動補完されましたが、他にも自動補完したい列があり、複数の列をテーブルにすると Excel で新しい行を挿入できません。
答え1
実際のスキーマに適応できる小さなデモを以下に示します。デモの内容は次のとおりです。
- 関心のある列は列B
- 複数の行を挿入しても何も起こりません
- データ領域の下に行が挿入された場合、何も起こりません
- 行が削除されても何も起こりません
- データの途中に行を挿入すると、列のセルB上記の式または以下の式のいずれかで埋められます
- 新しいセルの上または下に数式がない場合、何も起こりません
ワークシートのコード領域に次のサブを挿入します。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, r1 As Range, r2 As Range
Set r = Target
If r.Rows.Count > 1 Then Exit Sub
If r.Columns.Count <> Cells.Columns.Count Then Exit Sub
If r.Row = 1 Then Exit Sub
Set r1 = Intersect(r, Columns(2))
If r1.Value <> "" Then Exit Sub
If r1.Offset(-1, 0).HasFormula Then
Application.EnableEvents = False
r1.Offset(-1, 0).Copy r1
Application.EnableEvents = True
Exit Sub
End If
If r1.Offset(1, 0).HasFormula Then
Application.EnableEvents = False
r1.Offset(1, 0).Copy r1
Application.EnableEvents = True
Exit Sub
End If
End Sub
答え2
このビデオを投稿するつもりだったのですが、どうやら少なくとも 30 文字は入力する必要があるようです。
「これが簡単な方法です」はどうでしょうか。ああ、たった 29 個です。
興味のある方のために、「画像を挿入」アイコンは.movを受け入れませんが、かなり素敵なウェブサイトビデオファイルをアニメーション GIF に変換します。