物事を思いつくのに非常に長い時間がかかることがあります。 しかし、それらがすでに発明されている場合、事後的にそれらは明白で平凡にさえ見えます。 シリーズ「なに、できたの?」より。
最初のバージョンから、Microsoft Excel ウィンドウの下部にあるステータス バーには、選択したセルの合計が伝統的に表示されていました。
必要に応じて、これらの結果を右クリックして、コンテキスト メニューから表示したい関数を正確に選択することもできました。
そしてつい最近、最新の Excel の更新で、Microsoft の開発者がシンプルだが独創的な機能を追加しました。これらの結果をクリックすると、結果がクリップボードにコピーされるようになりました!
美しさ。
しかし、そのようなバージョンの Excel をまだ (または既に) 持っていない人はどうでしょうか? これは、単純なマクロが役立つ場所です。
マクロを使用して、選択したセルの合計をクリップボードにコピーする
タブで開く 開発者 (デベロッパー) エディタ ビジュアルベーシック または、このキーボード ショートカットを使用します 他の+F11. メニューから新しい空のモジュールを挿入 インサート – モジュール そこに次のコードをコピーします。
Sub SumSelected() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) .PutInClipboard End With End Sub
そのロジックは単純です。
- まず「愚か者からの保護」です。具体的に何が強調されているかを確認します。 セルが選択されていない場合 (グラフなど)、マクロを終了します。
- 次に、コマンドを使用して オブジェクトを取得 選択したセルの合計が後で保存される新しいデータ オブジェクトを作成します。 長くて理解できない英数字コードは、実際には、ライブラリが配置されている Windows レジストリ ブランチへのリンクです。 Microsoft Forms2.0オブジェクトライブラリ、そのようなオブジェクトを作成できます。 時々このトリックはまた呼ばれます 暗黙の遅延バインディング. 使用しない場合は、メニューからファイル内のこのライブラリへのリンクを作成する必要があります ツール — リファレンス.
- 選択したセルの合計がコマンドと見なされます WorksheetFunction.Sum(選択)、そして結果の金額はコマンドでクリップボードに置かれます クリップボードに挿入
使いやすくするために、もちろん、ボタンを使用してこのマクロをキーボード ショートカットに割り当てることができます。 マクロ タブ 開発者 (開発者 — マクロ).
また、マクロの実行後に正確に何がコピーされたかを確認したい場合は、対応するグループの右下隅にある小さな矢印を使用してクリップボード パネルをオンにできます。 メイン (ホーム) タブ:
金額だけでなく
平凡な量に加えて、何か他のものが必要な場合は、オブジェクトが提供する機能のいずれかを使用できます ワークシート関数:
たとえば、次のようなものがあります。
- 合計 – 合計
- 平均 – 算術平均
- Count – 数字を含むセルの数
- CountA – 塗りつぶされたセルの数
- CountBlank – 空のセルの数
- Min – 最小値
- 最大 – 最大値
- 中央値 – 中央値 (中央値)
- …など
選択した範囲で行または列が (手動またはフィルターによって) 非表示になっている場合はどうなりますか? 合計でそれらを考慮しないために、オブジェクトに追加してコードをわずかに変更する必要があります 選択 財産 SpecialCells(xlCellTypeVisible):
Sub SumVisible() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCells(xlCellTypeVisible)) . PutInClipboard End With End Sub
この場合、合計関数の計算は、表示されているセルのみに適用されます。
生きた処方箋が必要なら
思いついた場合は、数値 (定数) ではなく、選択したセルに必要な合計を計算する生きた数式をバッファーにコピーする方がよいシナリオを思いつくことができます。 この場合、数式をフラグメントから貼り付け、ドル記号を削除し、コンマ (VBA で選択された複数の範囲のアドレス間の区切りとして使用される) をセミコロンに置き換える必要があります。
Sub SumFormula() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(Replace(Selection.アドレス、","、";")、"$"、"") & ")" .PutInClipboard End With End Sub
追加条件付きの合計
最後に、完全にマニア向けに、選択したすべてのセルではなく、特定の条件を満たすセルのみを合計するマクロを作成できます。 したがって、たとえば、マクロは、値が 5 よりも大きく、同時に任意の色で塗りつぶされている場合、選択したセルの合計をバッファーに入れるようになります。
Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Then Exit Sub For each cell In Selection If cell.Value > 5 And cell.Interior.ColorIndex <> xlNone Then If myRange Is Nothing Then Set myRange = cell Else Set myRange = Union(myRange, cell) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) .PutInClipboard End With End Sub
容易に想像できるように、条件は、セル形式まで、任意の数 (論理演算子 or または and でそれらを結合することを含む) に設定できます。 想像力の余地がたくさんあります。
- 数式を値に変換する (6 通り)
- マクロとは何か、マクロの使い方、Visual Basic コードを挿入する場所
- Microsoft Excel のステータス バーに役立つ情報