[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日付の集計』(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
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
こちらの操作ミスでした。
失礼いたしました、
(ToTo) 2018/08/17(金) 07:54
(TOTO) 2018/08/21(火) 20:57
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.