20

同じ行の値を使用する数式がある行があります。次の行は空で、背景色が異なります。

ここで、新しい行を挿入すると(空の行を右クリックして「挿入」することにより)、背景色のない新しい行が表示されます(これは私が望むものです)が、行には数式も含まれていません。新しい行を作成するときに、Excelをよりスマートにし、前の行から数式をコピーするにはどうすればよいですか?

もう1つの情報:データ検証情報(つまり、ドロップダウンリスト)は、新しい行を挿入するときにコピーされます。

ありがとう。

4

5 に答える 5

24

データと数式を含む領域を表にします。

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

次に、次の行に新しい情報を追加すると、そのテーブル内のすべての数式が新しい行にコピーされます。データ検証は、列全体の場合と同様に、新しい行にも適用されます。これは確かにExcelがあなたのデータをより賢くしていることです。

VBAは必要ありません...

于 2012-12-13T10:28:51.123 に答える
2

新しい行を挿入してから、ソース行から新しく挿入された行にコピーする必要があります。Excelでは、特別な数式だけを貼り付けることができます。したがって、Excelでは:

  • 新しい行を挿入します
  • ソース行をコピーします
  • 新しく作成されたターゲット行を選択し、右クリックして特別に貼り付けます
  • 数式として貼り付ける

Rows( "1:1")をソース、Rows( "2:2")をターゲットとして、必要に応じてVBA:

Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Rows("2:2").Clear

Rows("1:1").Copy
Rows("2:2").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone
于 2012-12-12T22:32:47.607 に答える
2

テーブル内の行のコピーに関して私が見つけたもう1つの重要なことは、作業中のワークシートをアクティブ化する必要があるということです。複数のシートを含むブックがある場合は、マクロを呼び出したシートを保存してから、テーブルを使用してシートをアクティブ化する必要があります。完了したら、元のシートを再度アクティブ化できます。

Application.ScreenUpdating = Falseを使用して、マクロ内でワークシートを切り替えていることをユーザーに認識させないようにすることができます。

ワークシートをアクティブにしていない場合、コピーは正しく機能していないようです。つまり、一部のものは機能しているように見え、他のものは機能していないようです。

于 2015-02-06T21:16:54.890 に答える
1

Private Sub Worksheet_Change(ByVal Target As Range)

'data starts on row 3 which has the formulas
'the sheet is protected - input cells not locked - formula cells locked
'this routine is triggered on change of any cell on the worksheet so first check if
' it's a cell that we're interested in - and the row doesn't already have formulas
If Target.Column = 3 And Target.Row > 3 _
And Range("M" & Target.Row).Formula = "" Then

    On Error GoTo ERROR_OCCURRED

    'unprotect the sheet - otherwise can't copy and paste
    ActiveSheet.Unprotect
    'disable events - this prevents this routine from triggering again when
    'copy and paste below changes the cell values
    Application.EnableEvents = False

    'copy col D (with validation list) from row above to new row (not locked)
    Range("D" & Target.Row - 1).Copy
    Range("D" & Target.Row).PasteSpecial

    'copy col M to P (with formulas) from row above to new row
    Range("M" & Target.Row - 1 & ":P" & Target.Row - 1).Copy
    Range("M" & Target.Row).PasteSpecial

'エラーが発生した(または発生しなかった)場合は、イベントが再度有効になり、シートが再保護されていることを確認してください

ERROR_OCCURRED:

    If Err.Number <> 0 Then
        MsgBox "An error occurred. Formulas may not have been copied." & vbCrLf & vbCrLf & _
            Err.Number & " - " & Err.Description
    End If

    're-enable events
    Application.EnableEvents = True
    're-protect the sheet
    ActiveSheet.Protect

    'put focus back on the next cell after routine was triggered
    Range("D" & Target.Row).Select

End If

サブ終了

于 2019-04-22T01:28:12.713 に答える
0

すべてに数式が含まれている行が多数あるワークシートがある場合、最も簡単な方法は、データがない(ただし数式が含まれている)行をコピーしてから、行の下/上に「コピーしたセルを挿入」することです。追加したい。式は残ります。ピンチでは、データを含む行を使用しても問題ありません。貼り付けた後、クリアするか上書きしてください。

于 2017-04-25T17:07:23.633 に答える