Microsoft Excel のセルのバックグラウンドで数式を動作させ、ユーザーがデータを入力できるようにするにはどうすればよいでしょうか?

Microsoft Excel のセルのバックグラウンドで数式を動作させ、ユーザーがデータを入力できるようにするにはどうすればよいでしょうか?

複数のセルのデータをまとめるスプレッドシートを作成しようとしています。

基本的に、データを入力するときに数式を削除せずに、ユーザーが入力した同じ情報をセルA1に反映させたいSheet1のです。Sheet2

ユーザーがこれらのセルにデータを入力できるようにする必要がありますが、=Sheet2!A1または を使用する=Sheet1!A1と循環参照が作成され、ユーザーが数式を削除できる状態になります。

これを解決する方法を誰かお勧めいただけますか?

答え1

数式を含むセルに、数式を保持したままデータを入力することはできません。

解決策としては、ユーザーに別のセルにデータを入力してもらい、A1両方のシートでそのセルを参照してもらうことです。

答え2

マクロなしでは実行できません。次のコードが動作するはずです:

Private Sub Worksheet_Change(ByVal Target As Range)
    therow = 1
    thecolumn = 1
    Dim wks As Worksheet
    cellrow = Target.Row
    cellcolumn = Target.Column
    If (cellrow = therow And cellcolumn = thecolumn) Then
        Set wks = ThisWorkbook.Worksheets("Sheet2")
        wks.Cells(cellrow, cellcolumn) = Target.Value
    End If
End Sub

ALT+でマクロを開きF11、ダブルクリックシート1を左側に入力し、右側にコードを貼り付けます。このコードは で実行されるSheet 1ため、 の変更が にコピーされSheet1 A1ますSheet2 A1

ワークシートに変更があるたびに、このマクロが実行されます。変更されたセルが行1列1(セルA1)にあるかどうかを確認し、同じセルの値を次の行にコピーします。シート2

変更内容を確認したい場合はシート2シート1また、次のようになります。

  1. ダブルクリックシート2左側にあります。
  2. 右側にコードを貼り付けます。
  3. Set wks = ThisWorkbook.Worksheets("Sheet2")新しい宛先を示すように行を変更しますSet wks = ThisWorkbook.Worksheets("Sheet1")

現在、このマクロは変数を使用していますそしてコラム値を他のワークシートにコピーするかどうかを決定します。最初は行の1に設定されておりtherow=1thecolumn=1セルに興味があることを意味しますA1さらに、変更されたセルが行内のこれらの値と一致するかどうかを確認しますIf (cellrow = therow And cellcolumn = thecolumn) Then

値を変更してニーズに合わせてカスタマイズしたり、完全な列または行をチェックすることもできます。次に例を示します。

検証行を に変更すると、どの行であっても、If (cellcolumn = thecolumn) Then変数と同じ値を持つ列で発生した変更がコピーされます。thecolumn

その他の例:

検証行を に変更すると、どの行であっても、If (cellcolumn > thecolumn) Thenの値より大きい列で発生した変更がコピーされます。thecolumn

関連情報