はじめに
Excelの標準機能では、セル内のテキストに対して正規表現を使った一致判定を行う機能がありません。しかし、VBAを使って独自のワークシート関数を作成することで、正規表現を活用した柔軟なテキスト処理が可能になります。今回は、Excel VBAを使って正規表現マッチを使ったカスタムワークシート関数を作成する方法を解説します。
アラフォーSEが自由に自分の業務周りや趣味周りの各種IT系技術情報を発信するブログ。何年も前:OSS色強め→ちょっと前:ServiceNow色強め→今後Powershell、AWS、VBA主になりそう
Excelの標準機能では、セル内のテキストに対して正規表現を使った一致判定を行う機能がありません。しかし、VBAを使って独自のワークシート関数を作成することで、正規表現を活用した柔軟なテキスト処理が可能になります。今回は、Excel VBAを使って正規表現マッチを使ったカスタムワークシート関数を作成する方法を解説します。
データセットには、重複したデータが含まれることがあります。通常重複データの削除はメニューから実施しますが、定常作業で毎日のように実施したり、定型的なフォーマットで関数として実現したりしたい場合は、今回紹介するVBAによるカスタマイズワークシート関数を使用する事でわざわざ毎回メニューから操作せずとも重複を排除したデータがワークシート上で使用できるようになります。
カスタム関数は、Excelの標準関数にない機能を実現するために、VBAを使って作成されるユーザー定義関数です。これにより、独自の計算やデータ操作が可能になります。以下に、カスタム関数の開発方法といくつかの実用事例を紹介します。
ウェブスクレイピングは、ウェブサイトからデータを抽出する技術だったり行為だったりを言います。Excel VBAは、WebページのHTMLコードに簡単にアクセスでき、データの抽出が可能で、さらに皆さんが使い慣れたExcelで抽出したデータを取り扱えるため、Webスクレイピングのツールとして利用可能です。今回は、Excel VBAを使ったWebスクレイピングをステップバイステップで解説します。
Excelマクロをファイルを開いたタイミングで実行させる方法の概要。
標準モジュールに実行マクロ(MyMacro)を作成し、ThisWorkbookからWorkbook_OpenのイベントハンドラでCallで呼び出す。
Private Sub Workbook_Open()
Call MyMacro
End Sub
Excelファイルを開いた際に、特定のマクロを自動的に実行する方法について説明します。この方法を利用することで、繰り返し手動でマクロを実行する手間を省くことができます。
詳細手順は以下の通り。
今更だけどChatgptマジでやばいな。これコーディングだけやってる様な人の仕事マジでなくなるぞその内。
下記のコミュニケーション(らしきもの)が成立して、しかも成果物のコードがそれなりに動いてやがる。。。
以下実際の履歴。。。
Excelで異なるカラム構成のCSVを2つ読み込んで、共通のキーとなる値でデータを結合する。
データベース的に異なるファイル同士の情報を結合したいケースってありますよね。
Excel馬鹿、って言葉が聞こえてこなくもないが、いろいろと課題満載のこのテーマ。
何とか解決したので、記録しておきたい。
※↓のファイルの各シートやコードを見ながらだと理解がスムーズだと思われる。
https://1drv.ms/u/s!AqGyTO4ulx7loiRR-K8FS5KiCriz?e=NX55sv
→サンプルデータとマクロファイルセットになってます。
まずは状況の整理から。
以前こちらの記事で参考にしたソースコードでは一部うまく行かないケース(ps1スクリプトに与える引数が正しく渡せない)があったので動くように改善してみました。
Excel VBAからPowershellスクリプトを引数付きで実行する方法について解説します。関数化して、汎用性を持たせることで、複数のスクリプトを扱う場合やpowershell側の期待する引数の数が幾つの場合であっても簡単に実行できる様にしています。
Excel VBAは言わずもがな強力なツールであるが、ユーザへのアナウンスというかマニュアル作成というか、まぁ使ってもらうためのお膳立て面が面倒だったりする。
そこで、VBAで組んだ機能をワークシート関数化してしまえば、そのファイルの中ではワークシート関数(=sum(A1:A10)の様なのと同じ扱い)として使用可能になる。
場面により使える場合使えない場合があるが、VBAで作り込んだ機能の説明を0から行うよりは、簡単になる場面が多いかと思われる。
今回は引数とした任意のセル範囲の文字列に対するSHA256ハッシュ値を取得する関数をVBAで作成し、ワークシート関数として使用してみたい。
ちなみに標準のワークシート関数では現在のところ文字列のハッシュ値を取得は不可。
こんな状況がある。
従業員うん万人、
システムAのテーブル1にユーザIDと所属部署の情報、
システムBのテーブル2にユーザIDと居住都道府県の情報、
がそれぞれ格納されている。
システムA、Bともに外部へのデータ連携手段としてはCSVファイルのダウンロードのみ提供している。
私はシステムCの担当者でキーとなるユーザIDに所属部署と、居住都道府県両方の情報を紐づけてシステムCへインポートしたい。
色々とやり方はあるが、予算もないのでExcelで何とかする。
ワークシートに関数を入力してVlookupやらMatch+IndexやらやればVBAを使わずとも実現できるのだが、現実の場面ではシステムA,B共に他にも結合したいカラムが多数あってワークシート上に関数を大量に入力した神エクセルでは重くなって破綻するのが怖い。
データベースに取り込んじゃってjoinするってのもありだが、将来誰かに引き継ぐ事を考えると、裾野が広いExcelにしておきたい。
こんな場面をVBAでどう乗り切るかのアイデア。
Excel VBAから引数を渡す.ps1スクリプトを呼び出してExcelマクロで全体の処理をハンドリングするための材料調査。
という事でそこそこ簡単に実現できそうだ。
調べた内容は次の二点。
やりたい事①:VBAからのPS1スクリプト呼び出し。
やりたい事②:PS1スクリプトで引数を受けるお作法
インターネットが現代社会におけるコミュニケーションの基盤となっている今日、ウェブサイトのURLはビジネスや個人ブランディングにとって重要な役割を果たしています。URLは単にウェブページへの経路を示すだけでなく、SEO(検索エンジン最適化)においても重要な要素です。この記事では、U...