VBA

VBA for Excel



McrTool Supplement-2
[マクロツール]-[行の操作]-[キーワード・書式で選択]

選択された範囲から、キーワードや書式の条件に一致する行を選択します。 複数の列を検索範囲として選択しておくと、全ての列で条件に一致する行や、 いずれかの列で一致する行、或いは全く条件に一致しない行などを選択することができます。

[Select Keyword Row]ダイアログボックス
-[検索対象] : 検索するキーワードと書式を指定します。 必ずいずれかは指定しなければなりません。 両方指定すると全ての条件に当てはまる行を検索します。
-[キーワード] : テキストボックスにキーワードを指定します。検索対象はセルの値です。 空白にしておくと、空白(Empty)セルを検索します。
-[完全に同一なセル] : チェックすると、キーワードと検索セルの内容が完全に一致するセルを、 チェックしないとキーワードが含まれるセルを検索します。
-[書式] : 参照ボックスに、書式を設定したセルを指定します。 指定がないと、自動的に検索対象範囲の先頭セルが指定されます。
-[書式の検索対象] : 書式のうち、どの要素をチェックするかを指定します。(複数選択可) 書式を検索する場合は、必ずいずれか一つは指定してください。
-[文字色]、[背景色]、[パターン] :
-[各行内での一致条件] : 複数の列が検索対象範囲として選択されている場合に、
-[行内全体(AND)] : 選択範囲内で全てのセルが条件に一致する行を選択します(AND条件検索)。
-[行内の一部(OR)] : 選択範囲内で少なくとも1つのセルが条件に一致する行を選択します(OR条件検索)。
-[条件否定(NOT)] : 条件否定を設定し、上記の検索条件に一致しない行を選択します。 例えば、[キーワード]を空白、[行内の一部(OR)]条件で[条件否定(NOT)]を指定すると、空白セルが一つも含まれない行が選択されます。
-[選択範囲] :
-[行全体] : 最初の選択範囲にかかわらず、行全体を選択します。
-[選択範囲内の行] : 最初の選択範囲内で該当する行を選択します。
注1)
設定できる条件が多いため最初は混乱するかもしれませんが、必要のない条件は無視しておいてください。 例えば1列のみの検索であれば、最低限[キーワード]と[選択範囲]を指定すれば使用することができます。
注2)
[選択領域の移動]や[セルの選択]を併用すると、さらに複雑な選択をすることができます。
注3)
検索・一括削除の機能はありません。 Excelの仕様により、行などの「削除」をマクロで行うとUndoが効かなくなります。 これを避けるため、本マクロで削除候補を選択・確認した後、 UndoのできるExcel組み込みの[編集]-[削除]機能で削除してください。
[マクロツール]-[行の操作]-[重複行を選択]

選択された範囲から、上下でデータの重複した行を選択します。 複数の列を選んでおくと、全ての列に関して重複している行を選択します。

[Select Duplicate Row]ダイアログボックス
-[重複した先頭行] : 複数の列が検索対象範囲として選択されている場合に、
-[含む] : 重複のある全ての行を選択します。
-[含まない] : 重複した2行目以降だけを選択します。 これによって選択した行を削除すれば、重複のないリストを作成できます。
-[選択範囲] :
-[行全体] : 最初の選択範囲にかかわらず、行全体を選択します。
-[選択範囲内の行] : 最初の選択範囲内で該当する行を選択します。
-[Skip Mark] : 設定したキーワードを見つけると、処理をスキップします。 デフォルトは空白(Empty)です。(この場合、空白行が続いても重複行とはみなされません。)
注1)
実行する前に、昇順/降順で並べ替えておいてください。
注2)
[選択領域の移動]や[セルの選択]を併用すると、さらに複雑な選択をすることができます。
注3)
検索・一括削除の機能はありません。 Excelの仕様により、行などの「削除」をマクロで行うとUndoが効かなくなります。 これを避けるため、本マクロの[重複した先頭行]-[含まない]オプションで削除候補を選択・確認した後、 UndoのできるExcel組み込みの[編集]-[削除]機能で削除してください。
[マクロツール]-[行列の操作]-[集計]

選択範囲を、左端列、上端行をキーとして集計します。
SUM関数で集計するので[参照元のトレース]機能を利用して参照元を確認できます。

[実行例]

  1. 左端列、上端行が集計のキーとなるように集計範囲を選択します。
  1. [マクロツール]-[行列の操作]-[行・列の集計]コマンドを選択します。
  2. [マクロ貼り付け]と同様のダイアログボックスが開かれるので、 貼り付け先、貼り付け方を指定して[OK]ボタンをクリックします。
  3. 集計結果がSUM関数で作成されます。

注1)
集計の際、各コードは昇順でソートされます。
注2)
右端列、下端行を右下から検索して集計値の範囲を検索します。ここに不正な値が入力されていると正しく動作しません。
注3)
本マクロは、コードの変更が無くデータがしばしば更新される場合に有効です。 コード自体が頻繁に更新される場合はSUMIF関数などを利用してください。
[マクロツール]-[行列の操作]-[マトリクス-->リストの変換]

マトリクス(行列)形式のデータを、リスト形式へ変換します。 参照形式でリストを作成するので[参照元のトレース]機能を利用して参照元を確認できます。

FortranやCのプログラム用のデータを作成するのに便利です。

[実行例]

  1. 左端列、上端行がコードになるように集計範囲を選択します。
  1. [マクロツール]-[行列の操作]-[マトリクス-->リストの変換]コマンドを選択します。
  2. [マクロ貼り付け]と同様のダイアログボックスが開かれるので、 貼り付け先、貼り付け方を指定して[OK]ボタンをクリックします。
  3. リストが参照形式で作成されます。
    左から、[Row Index(行の通し番号)]、[Col Index(列の通し番号)]、 [Row Code(行コード)]、[Col Code(列コード)]、[Value(値)]の5列が作成されます。

注)
右端列、下端行を右下から検索して値の範囲を検索します。ここに不正な値が入力されていると正しく動作しません。
[マクロツール]-[行列の操作]-[リスト-->マトリクスの変換]

リスト形式のデータを、マトリクス(行列)形式へ変換します。 参照形式でマトリクスを作成するので[参照元のトレース]機能を利用して参照元を確認できます。

FortranやCのプログラムで作成したデータを処理するのに便利です。

[実行例]

  1. ここでは、[マトリクス-->リストの変換]機能で作成されたリストを利用します。 行列形式に変換する際にコードがソートされるため、通し番号つきのコードを新たに作成します。 (通し番号の2桁文字列への変換には、[マクロツール]-[セルの変換]-[桁数固定数値文字列]を使用し、E2=「=A2&C2」等として番号付きコードを作成しています)
  2. 1列目に[行コード]、2列目に[列コード]、3列目に[値]の3列を、1行目にフィールドラベルを含む範囲を選択します。 [値]フィールドのラベルは、作成されるマトリクスの左上セルに表示されます。

  3. [マクロツール]-[行列の操作]-[リスト-->マトリクスの変換]コマンドを選択します。
  4. [マクロ貼り付け]と同様のダイアログボックスが開かれるので、 貼り付け先、貼り付け方を指定して[OK]ボタンをクリックします。
  5. マトリクスが参照形式で作成されます。
    1行・1列に行・列コード、2行2列以降に値が作成されます。

注1)
集計の際、各コードは昇順でソートされます。
注2)
リスト中に同じコードが重複している場合はSUM関数で集計されます。
[マクロツール(シート)]-[検索-新規シートに出力]

セルを検索し、検索結果を新規シートに一覧表示します。 検索対象はアクティブブックで選択されているワークシート(複数選択可)です。

名前も検索します。「検索対象」で「値」を選んでいると名前のラベル、 「数式」を選んでいるとアドレスを検索します。

[Search Keyword]ダイアログボックス
-[キーワード] : テキストボックスにキーワードを指定します。検索対象はセルの値です。
-[完全に同一なセル] : チェックすると、キーワードと検索セルの内容が完全に一致するセルを、 チェックしないとキーワードが含まれるセルを検索します。
-[検索対象] : 検索する対象を指定します。
-[値] : セルの値を検索します。
-[数式] : セルに入力されている数式を検索します。
注)
「セルの値」とは、[値の貼り付け]コマンドで取得される値(Valueプロパティ)であり、 実際の表示内容(Textプロパティ)とは必ずしも一致しません。
[マクロツール(シート)]-[シート名]-[ラベルを指定して更新]

ラベルを指定し、複数シートグループの名前を一度に更新します。

[実行例]

  1. 新しい名前をどこかに作成しておきます。
  2. 名前を更新するシートグループを選択します。
  3. [マクロツール(シート)]-[シート名]-[ラベルを指定して更新]コマンドを選択します。
  4. 1で作成したラベル範囲を指定します。

  5. [シート名更新の確認]ダイアログボックスが表示されるので、問題が無ければ[OK]をクリックします。

  6. できあがり。

[マクロツール(シート)]-[シート名]-[ラベルを指定して新規作成]

シート名を指定し、複数シートグループを新規作成します。

[実行例]

  1. 新しい名前をどこかに作成しておきます。
  2. [マクロツール(シート)]-[シート名]-[ラベルを指定して新規作成]コマンドを選択します。
  3. 1で作成したラベル範囲を指定します。

  4. できあがり。

[マクロツール(シート)]-[シートの一括インポート]-[テキストファイル]

ファイルの拡張子と区切り文字を設定して、指定したフォルダ内の全てのファイルをインポートします。

[Open Text File]ダイアログボックス
-[ファイルの拡張子] : テキストボックスに拡張子を指定します(ピリオド「.」は必要ありません)。 デフォルトは「txt」です。
-[区切り文字] : 区切り文字を指定します(複数選択可)。
-[タブ]、[セミコロン]、[カンマ]、[スペース]
-[その他] : その他の区切り文字を指定する場合、右のテキストボックスに指定します。
-[連続する区切り文字は1文字として扱う]
-[文字列の引用符] : 「"」、「'」、「{なし}」を選べます。
注1)
基本的な設定は、Excel組み込みの[データ]-[区切り位置]ウィザードの、 [カンマやタブなどの区切り文字によってフィールド毎に区切られたデータ]コマンドに対応しています。
注2)
固定長文字列のテキストファイルには対応していません。


Program Top