Excel の数式を値に変換する

Excel の数式を値に変換する

切り取りと貼り付けの方法を使用せずに、数式が値を返す数値を作成する方法はありますか。

毎日約 100 個の異なるセルに対してこれを実行する必要があるためです。したがって、切り取りと貼り付けは実行可能な方法ではありません。これを回避できるショートカットや奇妙な方法はないでしょうか。

簡単に言うと、B1 を A4 にする必要があります。次に、新しい日のデータを追加して A4 を更新し、B2 を A4 - B1 の古い値にする必要があります。

これが機能するには、A4 を毎日更新する必要があるため、B1 が A4 を参照する数式ではなく値になっている必要があります。したがって、1 日ごとに次のセルが値になっている必要があります。

何度もコピー&ペーストできないことを覚えておいてください

誰か助けてくれませんか!

答え1

これは、列BおよびセルA4完全に空の状態から開始します。次のイベント マクロをワークシート コード領域に配置します。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A4 As Range, B1 As Range, n As Long
    Set A4 = Range("A4")
    Set B1 = Range("B1")
    If Intersect(A4, Target) Is Nothing Then Exit Sub

    Application.EnableEvents = False
        If B1 = "" Then
            B1 = A4
        Else
            n = Cells(Rows.Count, "B").End(xlUp).Row
            Cells(n + 1, "B").Value = Cells(n, "B").Value - A4
        End If
    Application.EnableEvents = True
End Sub

ワークシートコードなので、非常に簡単にインストール自動的に使用できます:

  1. Excelウィンドウの下部にあるタブ名を右クリックします
  2. 「コードの表示」を選択すると、VBEウィンドウが表示されます。
  3. 内容を貼り付けてVBEウィンドウを閉じます

不安な点があれば、まずはトライアルシートで試してみてください。

ワークブックを保存すると、マクロも一緒に保存されます。2003 以降のバージョンの Excel を使用している場合は、ファイルを .xlsx ではなく .xlsm として保存する必要があります。

取り除くマクロ:

  1. 上記のようにVBEウィンドウを表示します
  2. コードを消去する
  3. VBEウィンドウを閉じる

マクロ全般の詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/excel/getstarted.htm

そして

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

イベント マクロ (ワークシート コード) の詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/excel/event.htm

これを機能させるにはマクロを有効にする必要があります。

答え2

このようなパターンが設定されている場合、相対参照を使用して名前付き範囲 ("NR") を作成し、名前付き範囲の作成時にアクティブ セルを慎重に選択して、毎日それを使用して値を貼り付けることができます。

つまりset pattern、7 月 1 日がセル B1、H4、XX9 で「発生する」場合、7 月 2 日はそれらのセルのすぐ下、つまり B2、H4、XX10 で発生します。任意の月で同様に発生します。2 日目が B2、H38、XX10 になることは絶対にありません。

数式編集バーの左側にあるボックスで、名前付き範囲を選択できます。アクティブなセルを表示するものです。選択したら、 、 のCopy1Paste|Special|Valuesつの手順で完了します。ボックスで名前付き範囲を選択し、コピーして貼り付けます。これで完了です。

これを機能させるには、相対参照 ($B$1 ではなく B1 を使用) を使用します。そうすると、B1 の場合はそれが実行され、B2 が選択されている場合は代わりに B2 が実行されます。

これを機能させるためのもう 1 つの手順は、NR の作成中に最初のセルをアクティブ セルにすることです。その下のセルにいる場合は、B1 ではなく B2 が選択されます。

範囲内のセルをリストする文字列を、必要な方法で作成します。たとえ「約 100」のセル アドレスをすべて入力しなければならないとしても、それは一度だけです。文字列を組み合わせることを利用した多くのトリックが役立ちます。完了したら、テキストの断片を調べて確認しないでください。選択して、正しいセルがすべて選択されているかどうかを確認します。その方法の方が、正確に確認するのがはるかに簡単です。2 つのページを比較して、文字ごとに同じかどうかを確認するのと、一方をもう一方の上に置き、光にかざして違いがあるかどうかを確認するのと似ています。後者の方がはるかに簡単なだけでなく、より正確です。

NR 関数の外で文字列を作成し、それをコピーして新しい NR の [値] ボックスに貼り付けます。通常のスプレッドシート ページの簡単でツールが充実した環境の外で入力する必要はありません。

最後に、Excel ではなく Windows の奇妙な点ですが、NR の最後のセル アドレスは、NR が開始されるセルであり、最初のセルではありません。次に進むと最初のセルにロールオーバーされますTABが... 何ですか? つまり、#2、#3、... #最後のセル、#1 で始まるセルをリストすると、最初にアクティブ セルにしたいセルが選択されます。

ここでは、コピーと貼り付けには関係なく、これが完了したらさらに作業を開始するために「現在いる場所」にのみ関係します。ただし、他の用途、他のスプレッドシートでは、検討すると便利かもしれません。

繰り返しになりますが、毎日、値を貼り付けるセルの中から 1 つのセルを選択し、範囲を選択して、コピーして貼り付けます。これで完了です。マクロは必要ないので、学習する必要はなく、何か変更があった場合は範囲​​を簡単に編集したり追加したりできます。

関連情報