[[20180814213654]] 『日付の集計』(ToTo) ページの最後に飛ぶ

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

 

『日付の集計』(ToTo)

Sheet1のC3〜F7のデータをSheet2のI列〜Q列に返したいのです。

東京のように日付が3個(7/26、7/27、8/1)ある場合、

若番日付の順にI12〜K12、英数字もL12〜Q12に返すのは可能でしょうか。

毎日、コピぺでおこなってます。

ご教授よろしくお願いいたします。

※Sheet1のC列の日付は昇順になってます(500行)。
※Sheet2のF列の都市は固定になってます。
※日付は最大3個です。

Sheet1

        C      D       E       F     

   3   7/25     A       1    名古屋

   4   7/26     B       2    東京

   5   7/27     C       3    東京

   6   8/1      D       4    東京

   7   8/7      E       5    横浜

Sheet2

        F       I       J       K      L     M     N    O    P    Q 

  11  名古屋    7/25                    A     1

  12   東京     7/26    7/27    8/1     B     2     C    3    D    4

  13   横浜     8/7                     E     5

  14   大阪 

  15   札幌

    

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 >※Sheet1のC列の日付は昇順になってます(500行)。 

 同じ都市で、日付に重複はありますか?

(半平太) 2018/08/14(火) 22:27


(半平太)さん

ありがとうございます。

同じ都市で、日付に重複はありません。

よろしくお願いいたします。
(ToTo) 2018/08/15(水) 00:05


 >※Sheet1のC列の日付は昇順になってます(500行)。 

 1.安全を見て、1000行目までカバーすることにします。

 2.Sheet2の「I10セルから右に連番」を振るものとします。

 <Sheet2 結果図>
  行  ___F___  _G_  _H_  __I__  __J__  _K_  _L_  _M_  _N_  _O_  _P_  _Q_
  10                       1      2     3    4    5    6    7    8    9 ← 連番を振る
  11  名古屋             7/25               A     1                    
  12  東京               7/26   7/27   8/1  B     2   C    3   D     4
  13  横浜               8/7                E     5 
  14  大阪                                          
  15  札幌                                          
  16                                                

 (1) I11セル =IF($F11="","",IFERROR(AGGREGATE(15,6,Sheet1!$C$4:$C$1000/(Sheet1!$F$4:$F$1000=$F11),I$10),""))
   これをK11セルまでコピー

 (2) L11セル =IF(INDEX($I11:$K11,FLOOR(L$10-2,2)/2)="","",LOOKUP(INDEX($I11:$K11,FLOOR(L$10-2,2)/2),Sheet1!$C$4:$C$1000/(Sheet1!$F$4:$F$1000=$F11),IF(ISEVEN(L$10),Sheet1!$D$4:$D$1000,Sheet1!$E$4:$E$1000)))
   これをQ11セルまでコピー

 11行目の数式全体を所要範囲まで下にコピー

 ※ 都市名が大量にある場合は動きが重くなりますので、
   マクロで処理した方がいいと思います。

(半平太) 2018/08/15(水) 09:37


(半平太)さん

ありがとうございます。

Sheet2で名古屋以外は上手く表示されるのですが、名古屋の行は空白になります。

ただ、 Sheet1の名古屋を他の行に(例えば20行)コピーすると、Sheet2の名古屋の行(I11、L11/M11
)に表示されます。

        C      D       E       F     

   3   7/25     A       1    名古屋

  20   7/25     A       1    名古屋

(ToTo) 2018/08/16(木) 03:05


 済みません。4行目から作っちゃいました。m(__)m

 3行目からですと ↓

 (1) I11セル =IF($F11="","",IFERROR(AGGREGATE(15,6,Sheet1!$C$3:$C$1000/(Sheet1!$F$3:$F$1000=$F11),I$10),""))
 (2) L11セル =IF(INDEX($I11:$K11,FLOOR(L$10-2,2)/2)="","",LOOKUP(INDEX($I11:$K11,FLOOR(L$10-2,2)/2),Sheet1!$C$3:$C$1000/(Sheet1!$F$3:$F$1000=$F11),IF(ISEVEN(L$10),Sheet1!$D$3:$D$1000,Sheet1!$E$3:$E$1000)))

(半平太) 2018/08/16(木) 08:41


Sub main()
    Dim c As Range, cc As Range, r As Range, f As Range
    For Each c In Sheets("Sheet2").Range("F11:F" & Sheets("Sheet2").Range("F" & Rows.Count).End(xlUp).Row)
        Set cc = c.Offset(, 1)
        Set r = Sheets("Sheet1").Range("F:F").Find(c.Value, , , xlWhole)
        If Not r Is Nothing Then
            Set f = r
            Do
                cc.Value = r.Offset(, -3).Value
                cc.Offset(, cc.Column - 4).Resize(, 2).Value = Array(r.Offset(, -2).Value, r.Offset(, -1).Value)
                Set cc = cc.Offset(, 1)
                Set r = Sheets("Sheet1").Range("F:F").FindNext(r)
                If r.Address = f.Address Then
                    Exit Do
                End If
            Loop
        End If
    Next c
End Sub
(mm) 2018/08/16(木) 09:26

(半平太)さん

ありがとうございます。
上手くいきました。
感謝いたします!

(mm)さん

マクロを作っていただき、ありがとうございます。
コード内容は判らないのですが、マクロの実行をしても表示ができませんでした。
(ToTo) 2018/08/16(木) 23:53


(m m)さん

こちらの操作ミスでした。
失礼いたしました、

(ToTo) 2018/08/17(金) 07:54


再度、教えて頂きたいのですが、マクロのコードで
Sheet2のF列の範囲をF11〜F500としたい場合,
どこのコードを修正すればよいのでしょうか?
例えばSheet2のF501以降にに数式を設定した場合、上手く実行できません。
よろしくお願いいたします。

(TOTO) 2018/08/21(火) 20:57


コメント返信:

[ 一覧(最新更新順) ]


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