[[20140916154619]] 『sumproductでtrueを返す行の情報を取得する』(+チック) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『sumproductでtrueを返す行の情報を取得する』(+チック)

お世話になります。

現在、シート「詳細記入表」に予定を記載すると、シート「予定一覧表」に、その日の予定件数を反映するというカレンダーを制作しています。

詳細記入表

       C     D    E   ---  H ---   M    ---
 4   10月予定
 5   業者名    施工日    邸名    商品名   予定
 6   A店     1    加藤邸       ○○      予約
 7   A店     1   鈴木邸    ○×   確定
 8   A店     1   
 9   A店     2   諏訪邸    ××   予約
 10  A店     2
 11  A店     2
 96 A店     31   佐田邸        ○○   アフター
 97  A店     31   
 98  A店     31
 99  B店          1   大島邸    ××   その他
 100 B店     1   
 101 B店     1
 3499

予定一覧表

    B     C     D     E     F     G   ---   AG
 4           1     2     3     4     5         31 ←施工日
 5    A店   2     1     0     0     0         1    
 6   B店   1     0     0     0     0         0
 -
 -
 -
 29

予定一覧表のC5には、その日に入っている予定の件数を数えるため、以下の数式を入れ、AG29までオートフィルしています。
=SUMPRODUCT((詳細記入表!$M$6:$M$3499={"予約","確定","アフター","その他"})*(詳細記入表!$C$6:$C$3499=予定一覧表!$B5)*(詳細記入表!$D$6:$D$3499=予定一覧表!C$4))
(ちなみに、詳細記入表のM列にはこの4つの値以外は使用しません)

ここまで作成したところで欲が出てしまったのですが、例えばこの例で言うと予定一覧表のC5セルをダブルクリックしたときに、メッセージボックスでその日に入っている予定を
加藤邸 ○○ 予約 鈴木邸 ○× 確定
というような形で表示することなどは出来ますでしょうか?
要は、上の数式でtrueを返している行の情報を表示したいということなのですが・・・・・・。

よろしくお願いします。

< 使用 アプリ:Excel2000、使用 OS:WindowsXP >


 月単位のようなので、年、月情報はなく日付の数字だけの管理と思います。
 またメッセージボックスということなので、マクロの要望でしょうか。

 面白そうだったので、とりあえずのサンプルです。
 下記をダブルクリックするシートモジュールにおいてください。

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim corpName
    Dim dayNum
    dayNum = Cells(4, Target.Column).Value
    corpName = Cells(Target.Row, "B").Value

    Dim res
    Dim r As Long
    With Worksheets("詳細記入表")
        For r = 6 To .Cells(.Rows.Count, "C").End(xlUp).Row
            If .Cells(r, "C").Value = corpName And .Cells(r, "D").Value = dayNum Then
                res = res & IIf(res = "", "", vbNewLine)
                res = res & .Cells(r, "E").Value
                res = res & " " & .Cells(r, "F").Value
                res = res & " " & .Cells(r, "G").Value
            End If
        Next
    End With
    If res = "" Then res = "予定はありません"
    MsgBox res

    Cancel = True
 End Sub

(Mook) 2014/09/16(火) 16:30


Mookさん
ありがとうございます。希望していた動作ができました。
このコードも私にとっては十分複雑に見えるのですが、1時間足らずで出来てしまうものなんですね。本当に尊敬します。

ありがとうございました。
(+チック) 2014/09/16(火) 19:25


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.