を記入 function newMark(y,m,d) { oldDay = new Date(y+"/"+m+"/"+d); newDay = new Date(); n = (newDay - oldDay)/(1000*60*60*24); if(n <= 14)document.write(""); } //-->
エクセルで表を作成して、その中である記号に注目して検索したり、抽出したり、またすべての行を表示したいことがある。たとえば、一覧表の中で、○印をつけたものだけを抽出し、それを別のシートに表示する。また案内を出した人の名簿を作成していて、実際に参加した人を名簿の中で○印を入れて、それを一気に別シートに表に作成する。そのまま印刷も可能にするマクロもできる。
モジュールのソースをボタンでコピーできるようにしました。ホームページに載っているソースをコピーしようとしてドラッグしかけて、うまく全体がコピーできなかったことを今まで何度も経験していると、簡単にコピーできるほうがありがたい。そんな思いで一括コピーするボタンをつけてみました。もちろん私はエクセルVBAといっても本で読んだり、他の人のHPを参考にしながら、自分が利用しそうなものをまとめているだけで、自分なりに手を加えている箇所は非常に少ないだろうと思います。
エクセルVBAのマクロの記述モジュールは緑の枠内に記述しています。「モジュールをコピーする」のボタンをクリックすると、このモジュール全体を一発でコピーします。それを貼り付けてマクロを実行してみてください。
1 文字列検索
2 全行を表示
3 参照セルを含む列の最終セル
4 検索データ件数
5 抽出貼付コピー別シート
6 抽出から表に整形
7 漢字を取得しセルに書き出す
このマクロは、シートのA〜Hに表があり、その中のデータを検索するときに利用できる。大量のデータを入力した後、同一名で他の項目の表示が違うとき、いくつかの検索語句でand、orの検索ができる。ここでは、A2:H4の範囲に検索語句を記入し、and検索のときは検索窓の同一行に項目列にあった語句を記入し、or検索のときは別の行に語句を記入する。
検索などで抽出表示をしたときに、その後、またすべての行を表示したいときにこのマクロを実行すると、一気に表示できる。オートシェイプでボタン枠を作り、それを右クリックで「マクロの登録」からこの全行表示を登録しておくと便利です。
表の中に「田中」という文字がいくつあるか件数を求める。
このマクロは、「抽出」とつけられたシートに、抽出されたデータをコピーして貼付をするものです。「抽出」と名前をつけたシートの記述をすべてクリアーします(何かのデータが重なることを防ぐため)。「sheet3」のA列で「o」「O」(オー)の入力されたデータを抽出し、「抽出」シートに貼り付けます。貼り付ける範囲は、A列〜C列の内容です。
この記述は、次のような場面を想定している。
(1)「案内先」と名づけたシートに、A列にチェック欄。出席者にはアルファベットのオー「o」を入力する。B列には職名を表示している。C列は「ふりがな」。D列は「氏名」という構成である。
(2)このマクロはオートシェイプなどでボタンを作成して、出席のチェックを入れた後、そのボタンにと憂ー録したこのマクロを実行し、即印刷までできるようにしたものです。
(3)出席者のオー「o」がついた人の名簿を、「紹介」と名づけたシートに転記している。ただ、データがなくなったら困ると思って、抽出したデータは「紹介」のシートの101行以降にいったん記述し、そのデータを2行で表示できるように計算して書き直している。
(4)2列に書き直すときには1列目が、E列〜H列に、2列目がA列〜D列に表示するようにしている。
セル内の文章の中でいくつかの漢字にルビを振ろうとしてセルをルビ表示にすると、すべての漢字が入力したときのルビが表示されてしまう。2,3の漢字だけでよいのに、不必要な漢字のルビを編集で削除するのは細かい作業となり、大変です。またどこかからコピーしてセルに貼り付けた文章であれば、ルビ表示にしてもルビが表示されない。そこでそのような必要がある時に、セルの中の漢字を取得し、セルに一つ一つ書き出し、必要なところだけルビとしての文字を入力しておけばよい。ここでは漢字を抜き出すマクロを書き留めておく。[々][〃]も取得するとしたが、「二」のくずしのユニコード「U+303B」は取得できない。