座標選択

大きなモニターがありますが、作業するテーブルはさらに大きくなります。 そして、必要な情報を求めて画面を見渡すと、次の行に目を「滑らせて」間違った方向を見る可能性が常にあります。 そんなときはいつも木の定規を手元に置いて、モニターの線に合わせている人もいます。 未来のテクノロジー! 

また、アクティブなセルがシート上を移動したときに現在の行と列が強調表示されている場合はどうなりますか? このような一種の座標選択:

定規よりいいですよね?

これを実装するには、さまざまな複雑さの方法がいくつかあります。 それぞれの方法には長所と短所があります。 それらを詳しく見てみましょう。

方法 1. 自明。 現在の行と列を強調表示するマクロ

「額」の問題を解決する最も明白な方法は、シートの選択範囲の変更を追跡し、現在のセルの行と列全体を選択するマクロが必要です。 必要に応じてこの機能を有効または無効にできることも望ましいです。これにより、このような十字形の選択によって式などの入力が妨げられることはなく、必要なものを探してリストを調べたときにのみ機能します情報。 これにより、シート モジュールに追加する必要がある XNUMX つのマクロ (選択、有効化、および無効化) が表示されます。

このような座標選択を取得するテーブルを含むシートを開きます。 シート タブを右クリックし、コンテキスト メニューからコマンドを選択します。 原文 (ソースコード)。Visual Basic Editor ウィンドウが開きます。 これら XNUMX つのマクロのこのテキストをそれにコピーします。

Dim Coord_Selection As Boolean '選択のオン/オフのためのグローバル変数 Sub Selection_On() '選択のマクロ Coord_Selection = True End Sub Selection_Off() 'マクロの選択のオフ Coord_Selection = False End Sub '選択を実行するメイン プロシージャ Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim WorkRange As Range If Target.Cells.Count > 1 Then Exit Sub '複数のセルが選択されている場合は終了 If Coord_Selection = False Then Exit Sub '選択がオフの場合、Application.ScreenUpdating = False を終了 WorkRange = Range を設定(" A1:N6") '選択範囲が表示される作業範囲のアドレス  

作業範囲のアドレスを独自のものに変更します。選択した範囲が機能するのは、この範囲内です。 次に、Visual Basic Editor を閉じて、Excel に戻ります。

キーボードショートカットを押す Alt + F8使用可能なマクロのリストを含むウィンドウを開きます。 大きい 選択オンご想像のとおり、現在のシートの座標選択とマクロが含まれています 選択_オフ – オフにします。 同じウィンドウで、ボタンをクリックして 計測パラメータ (オプション) 簡単に起動できるように、これらのマクロにキーボード ショートカットを割り当てることができます。

この方法の利点:

  • 実装の比較的容易さ
  • 選択 - 操作は無害であり、シート セルの内容や書式を変更することはありません。すべてがそのまま残ります。

この方法の短所:

  • シートに結合されたセルがある場合、そのような選択は正しく機能しません - 結合に含まれるすべての行と列が一度に選択されます
  • 誤って Delete キーを押すと、アクティブなセルだけでなく、選択された領域全体が消去されます。つまり、行と列全体からデータが削除されます。

方法 2. オリジナル。 CELL + 条件付き書式機能

この方法にはいくつかの欠点がありますが、私には非常にエレガントに思えます。 組み込みの Excel ツールのみを使用して何かを実装するには、最低限 VBA でプログラミングを行うことが曲技飛行です 😉

メソッドは、CELL 関数の使用に基づいており、高さ、幅、行と列の数、数値形式など、特定のセルに関する多くの異なる情報を提供できます。この関数には XNUMX つの引数があります。

  • 「列」や「行」などのパラメータのコード ワード
  • このパラメータの値を決定するセルのアドレス

秘訣は、XNUMX 番目の引数がオプションであることです。 指定されていない場合は、現在アクティブなセルが使用されます。

このメソッドの XNUMX 番目のコンポーネントは、条件付き書式です。 この非常に便利な Excel 機能を使用すると、指定した条件を満たしたセルを自動的に書式設定できます。 これら XNUMX つのアイデアを XNUMX つに組み合わせると、条件付き書式設定によって座標選択を実装するための次のアルゴリズムが得られます。

  1. テーブル、つまり将来座標選択が表示されるセルを選択します。
  2. Excel 2003 以前では、メニューを開きます 書式 – 条件付き書式 – 式 (書式 — 条件付き書式 — 数式). Excel 2007 以降 – タブをクリックします。 ホーム (ホーム)(Comma Separated Values) ボタンをクリックして、各々のジョブ実行の詳細(開始/停止時間、変数値など)のCSVファイルをダウンロードします。 条件付き書式 – ルールの作成 (条件付き書式 — ルールの作成) ルールの種類を選択します 式を使用して、フォーマットするセルを決定する (式を使用)
  3. 座標選択の式を入力します。

    =OR(CELL(“行”)=ROW(A2),CELL(“列”)=COLUMN(A2))

    =OR(CELL(«行»)=ROW(A1),CELL(«列»)=COLUMN(A1))

    この数式は、テーブル内の各セルの列番号が現在のセルの列番号と同じかどうかを確認します。 列についても同様です。 したがって、現在のセルと一致する列番号または行番号を持つセルのみが入力されます。これが、達成したい十字型の座標選択です。

  4. プレス フレームワーク (フォーマット) 塗りつぶしの色を設定します。

すべてがほぼ準備ができていますが、XNUMX つのニュアンスがあります。 実際には、Excel は選択範囲の変更をシート上のデータの変更とは見なしません。 その結果、アクティブ セルの位置が変更された場合にのみ、数式の再計算や条件付き書式の再配色がトリガーされません。 したがって、これを行う簡単なマクロをシート モジュールに追加しましょう。 シート タブを右クリックし、コンテキスト メニューからコマンドを選択します。 原文 (ソースコード)。Visual Basic Editor ウィンドウが開きます。 この単純なマクロのこのテキストをそれにコピーします。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveCell.Calculate End Sub  

これで、選択が変わると、関数を使用して数式を再計算するプロセスが開始されます CELL 条件付き書式で、現在の行と列を塗りつぶします。

この方法の利点:

  • 条件付き書式は、カスタム テーブルの書式設定を壊しません
  • この選択オプションは、結合されたセルで正しく機能します。
  • 偶発的なクリックでデータの行と列全体を削除するリスクがない 削除.
  • マクロの使用は最小限

この方法の短所:

  • 条件付き書式の数式は手動で入力する必要があります。
  • このようなフォーマットを有効/無効にする簡単な方法はありません。ルールが削除されるまで、常に有効になっています。

方法 3. 最適。 条件付き書式 + マクロ

黄金比。 方法 1 のマクロを使用してシート上の選択を追跡するメカニズムを使用し、方法 2 の条件付き書式を使用して安全な強調表示を追加します。

このような座標選択を取得するテーブルを含むシートを開きます。 シート タブを右クリックし、コンテキスト メニューからコマンドを選択します。 原文 (ソースコード)。Visual Basic Editor ウィンドウが開きます。 これら XNUMX つのマクロのこのテキストをそれにコピーします。

Dim Coord_Selection As Boolean Sub Selection_On() Coord_Selection = True End Sub Sub Selection_Off() Coord_Selection = False End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim WorkRange As Range, CrossRange As Range Set WorkRange = Range("A7:N300") If Target.Count > 1 Then Exit Sub If Coord_Selection = False Then WorkRange.FormatConditions.Delete Exit Sub End If Application.ScreenUpdating = False If Not Intersect(Target, WorkRange) Is Nothing Then Set CrossRange = Intersect( WorkRange, Union(Target.EntireRow, Target.EntireColumn)) WorkRange.FormatConditions.Delete CrossRange.FormatConditions.Add Type:=xlExpression, Formula1:="=1" CrossRange.FormatConditions(1).Interior.ColorIndex = 33 Target.FormatConditions .End Sub の場合は End を削除  

作業範囲アドレスをテーブル アドレスに変更することを忘れないでください。 Visual Basic Editor を閉じて、Excel に戻ります。 追加したマクロを使用するには、キーボード ショートカットを押します Alt + F8  方法1と同じように進めます。 

方法 4. 美しい。 FollowCellPointer アドオン

オランダの Excel MVP Jan Karel Pieterse は、彼の Web サイトで無料のアドオンを提供しています フォローセルポインタ(36Kb)、マクロを使用してグラフィックの矢印線を描画し、現在の行と列を強調表示することで、同じ問題を解決します。

 

いい解決策。 所々に不具合がないわけではありませんが、試してみる価値は間違いありません。 アーカイブをダウンロードしてディスクに展開し、アドオンをインストールします。

  • Excel 2003 以前 – メニューから サービス – アドオン – 概要 (ツール — アドイン — 参照)
  • Excel 2007 以降では、 ファイル – オプション – アドオン – 移動 – ブラウズ (ファイル — Excel のオプション — アドイン — 移動 — 参照)

  • マクロとは、Visual Basic でマクロ コードを挿入する場所

 

コメントを残す