[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『集計方法』(あい)
表1
A B C ※A1:A3、A4:A5はセルで結合されています
1 北海道 りんご 100 Aの項目は変わりません
2 みかん 50 B,Cは固定ではありません
3 ぶどう 150
4 青森 りんご 200
5 ぶどう 100
6 岩手 りんご 200
表2
A B C
1 りんご 北海道 100
2 青森 200
3 岩手 200
4 みかん 北海道 100
5 ぶどう 北海道 150
6 青森 100
表2の情報を表1にまとめ直したいのですが、どういった方法で集計するのが良いでしょうか?宜しくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
表2のみかんは50の間違いです。
(あい) 2022/01/11(火) 13:44
'Sheet1からSheet2にまとめ
Dim c As Range
Sheets(2).Cells.Delete
Sheets(1).Cells.Copy Sheets(2).Range("A1")
Sheets(2).Cells.UnMerge
For Each c In Sheets(2).Range("B:B").SpecialCells(2)
If c.Offset(, -1).Value = "" Then c.Offset(, -1).Value = c.Offset(-1, -1).Value
Next c
With Sheets(2)
.Columns(2).Cut
.Columns(1).Insert Shift:=xlToRight
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=.Range("A:A")
.Sort.SetRange .Range("A:C")
.Sort.Apply
For Each c In .Range("A:A").SpecialCells(2)
If WorksheetFunction.CountIf(.Range("A1:A" & c.Row), c.Value) <> 1 Then c.Value = ""
Next c
End With
End Sub
(mm) 2022/01/12(水) 10:14
作業列使いまくりで関数でやってみた。
表1がSheet1で表2がSheet2だとする。
またSheet1のD,E,F列、Sheet2のD列を作業列とする。
Sheet1
D1セル:=A1
D2セル:=IF(B2="","",IF(A2="",D1,A2))
D2セルを下へフィルコピー。
E2セル:=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($1:$50)/(COUNTIF(INDIRECT("B1:B"&ROW($1:$50)),B$1:B$50)=1),ROW(A1))),"")
E2セルを下へフィルコピー。
(ねむねむ) 2022/01/12(水) 10:58
すまない。 上記のE2セルはE1セルの間違い。
Sheet1 F1セル:1 F2セル:=IF(E1="","",F1+COUNTIF(B:B,E1)) F2セルを下へフィルコピー。 Sheet2 A1セル:=D1 A2セル:=IF(D2=D1,"",D2) A2セルを下へフィルコピー B1セル:=IF(D1="","",INDEX(Sheet1!D:D,AGGREGATE(15,6,ROW($1:$50)/(Sheet1!B$1:B$50=D1),COUNTIF(D$1:D1,D1)))) B1セルを下へフィルコピー。 (ねむねむ) 2022/01/12(水) 11:02
Sheet2 C1セル:=IF(D1="","",SUMIFS(Sheet1!C:C,Sheet1!B:B,D1,Sheet1!D:D,B1)) C1セルを下へフィルコピー。 D1セル:=INDEX(Sheet1!E:E,MATCH(ROW(A1),Sheet1!F:F,1)) D1セルを下へフィルコピー。 これで完了。 なお上記では元データが最大50行までに対応している。 もっとある場合は式中の$50をおおきくしてくれ。 (ねむねむ) 2022/01/12(水) 11:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.