アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2002を使っています。
各支店に作業の進捗状況を報告してもらうため、同じフォーマットで記したエクセル表を提出してもらい、ある項目が入力されている個数の数を調べています。(支店毎にBookは別です)
元々は同じフォーマットだったので個数を数えたいのは「E列」と決まっていたのですが、いざ提出されたシートには、列が挿入や削除され、個数を数えたい列はがD列やF列になっているものもあり、当初使用しようと思っていたマクロが使えなくなってしまいました。
よって、フィルタをかけたい項目名は「完了日」と決まっているので、「完了日」と記されたセルを探し、そこでフィルタをかけて「空白以外のセル」を抽出する→抽出された個数を数えるというマクロを作りたいのですが、初心者の私では上手く出来ません。
初歩的な質問で申し訳ありませんが、宜しくお願いします。
ちなみにフィルタをかけたい項目は1行目にあるとは限りません。
個数を数えるのはブック毎に行ないます。

A 回答 (2件)

下記を参考にして列の位置を探してみてはどうでしょうか?


また、カウントは、loopで、数えればOKです。
With Workbooks("Book_A.xls").Worksheets("Sheet1") --- end with
は、対象Book_A.xlsが表に出ていなくても(マクロが入ったブックが
前面に出ている状態)、きちんと動くようにする為です。

「完了日」が1行目にないことに配慮し、カウントの開始は、
「完了日」のある行の次の行からチェックに入ります。

尚、大前提として、1列目は、すべての行に何がしか、データ(日付等)が入っていることとします。空白がきた時点で、点検終了としています。

----------------------------------------------------
Sub findkey_count()
Dim myRange As Range
Set myRange = Workbooks("Book_A.xls").Worksheets("Sheet1").Cells.Find("完了日", , xlValues, xlWhole)
If Not myRange Is Nothing Then
myColumn_A = myRange.Column ' B列なら 2
myRow_A = myRange.Row
End If

count_A = 0
With Workbooks("Book_A.xls").Worksheets("Sheet1")
rowpos = myRow_A + 1
Do While .Cells(rowpos, 1).Value <> ""
If .Cells(rowpos, myColumn_A).Value <> "" Then count_A = count_A + 1
rowpos = rowpos + 1
Loop
End With

MsgBox count_A
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
早速明日試してみます♪
VBA初心者の私では、今内容を見ただけではわかりませんが、一緒に集計作業をしているVBA記述が出来る者にはとても参考になると思います。(彼女がこの記述方法を知りたがっていたので)
ありがとうございました。
m(__)m

お礼日時:2007/03/15 21:37

発想の転換など、問題解決のきっかけになればと思い、回答いたします。



支店数はいくつでしょうか?
提出されたデータは今後使用することはないのですか?
と言うのも、フォーマットを再度整えて、用意しておいたマクロを使用するのではダメなのでしょうか?

また、フィルタをかけなくとも、空白でないセルの個数をカウントすればよいのであれば、ただ関数を最終セルに入れることで可能ではないでしょうか?
その結果を集計ブックに集めるというのであれば、マクロも有効かと思いますが。
    • good
    • 0
この回答へのお礼

★支店数は30支店強、1支店に3シートあるので全部で約90シートです。
★ファイルは毎週1回、計4回報告して貰い、報告もらったファイルを毎週集計します。
報告は週1回ですが、支店では日々担当者が各自ファイル入力をして更新しているので、今の段階で再度こちらから提出してもらうファイル整えて、これで提出するようにとは言えない状況です。
★集計時にフォーマットを整えても、次の報告は前回と同じファイルに進捗を書き足して報告してくるので、毎回フォーマットを直さなくてはなりませんし、どこを崩したかを探すのも時間がかかりそうな状態です。
★便宜上空白以外のセルのカウントを質問しましたが、実際は特定の用語や、日付が何日以降のものをカウントしたりするのですが、それらのマクロは当初用意されていたマクロ内に記述があるので、【”●●”と記されたセルを探し、そこでフィルタをかける】というVBAが知りたくて質問した次第です。

当初用意されていたマクロは、自動的に全てのファイルを集計するものだったのですが、実際報告されたファイルは、行例削除、シート名変更、ソートがかかっていたり、・・・etcいろんな種類の変更がなされており使えないので、全てのファイルを自動集計するのは諦めて、ファイルをひとつづつ開いて簡単な部分的に動作するマクロを用いて集計しています。その際、【「●●」と記されたセルを探し、そこでフィルタをかける】記述がわかればもっと楽になるのにと思って質問した次第です。
質問の仕方がまずくてすみませんでした。
問題解決になるよう、発送の転換方法を考えて下さいありがとうございました。

お礼日時:2007/03/15 21:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!