セミナー受講生からの質問をご紹介します。このブログの読者の多くの方にも参考になると思います。
小川先生
いつもお世話になります。
以前に添削いただいたデータになりますが、もう一点ご相談したい件が出てきました。
このデータは取引先から定期的に送られてくるものなのですが、添付例のようにA~C列と1~3行目がブランクになっています。
厄介なのはデータによって、毎回ブランクの列と行が違うことで、場合によってはそれがA~B列、1~2行目になったり、またブランクが無かったりすることもあります。
マクロで実行したい処理は、ブランクを消してデータをA列に詰めることです。
自分でコードは書いてみたのですが、場合によってはエラーが出るコードしか思い浮かばず困っています・・・ 何か他に良い方法がありましたらご教示ください。
どうぞ宜しくお願いします。
山本
excelの表で、ある部署から定期的に送られてくるデータが毎回表の先頭が違うので困っていた。
どうにかうまく処理できないか・・というもの
こういう例は、結構あります。他の部署から来るシートの始まりの列がそれぞれ違うなんてことはよくある悩みですよね。
そういう場合は Findメソッドを使います。具体的なサンプルコードを以下に紹介しますので参考にしてみて下さい。
Findメソッド
Sub Macro1_kaihen()
Dim rgKiten As Range
Set rgKiten = Cells.Find(What:=”Material”)
Debug.Print rgKiten.Address
End Sub- – –
VBE初中級ガイドにも書いていますが、
「分からないときは、まずは自動記録して、その中身を見てみる!」です。
エクセルの「自動記録機能」を使って、出来たマクロは以下の様になります。
Sub Macro1()
‘
‘ Macro1 Macro
‘ マクロ記録日 : 2010/3/1 ユーザー名 : kone
‘
‘
Cells.Find(What:=”Material”, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
End Sub
でも、「自動記録機能」で作ったマクロは、癖があって読みにくいですよね、
達人養成塾のエクセルマクロ講座では、
「自動記録で出来上がったマクロを読み解いて、必要な部分だけを抽出する」というワザもお教えしています。
「自動記録機能」で作ったマクロを読めるというスキルは、結構役に立ちます。