Excel: 列内の各セルにデフォルトの数式を設定する

Excel: 列内の各セルにデフォルトの数式を設定する

各セルの左側にある 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

実際のスキーマに適応できる小さなデモを以下に示します。デモの内容は次のとおりです。

  1. 関心のある列は列B
  2. 複数の行を挿入しても何も起こりません
  3. データ領域の下に行が挿入された場合、何も起こりません
  4. 行が削除されても何も起こりません
  5. データの途中に行を挿入すると、列のセルB上記の式または以下の式のいずれかで埋められます
  6. 新しいセルの上または下に数式がない場合、何も起こりません

ワークシートのコード領域に次のサブを挿入します。

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 に変換します。

ここに画像の説明を入力してください

関連情報