|
▼ハチ さん:
すみません、上で返信を書いている後にハチさんの投稿に気付きました。
ありがとうございます!
>このデータには「項目行」はあるのでしょうか?
項目行、というのは、以下のような、見出しのようなものですか?
元データ
名前 数量
aaa/ 4
aaa/test1 3
aaa/test2 1
bbb/ 6
ccc/ 8
ccc/test1 4
ddd/test1 6
ddd/test2 4
eee/ 2
eee/test2 3
↓
出したい結果
名前 数量
aaa/ 8
bbb/ 6
ccc/ 12
ddd/ 10
eee/ 5
ハチさんに教えていただいた、
=LEFT($A2,FIND("/",$A2))を利用すると・・・
名前 数量
aaa/ 4
aaa/ 3
aaa/ 1
bbb/ 6
ccc/ 8
ccc/ 4
ddd/ 6
ddd/ 4
eee/ 2
eee/ 3
というデータができました。
そしてピボットテーブルを作成(ピボットテーブルというのを今回はじめて知りました。。。)すると、出したい結果がでました!ありがとうございます。
これの一連を、「マクロの記録」で登録したので、とりあえずのコードを書いておきます。
Sub Macro1()
Columns("A:B").Copy
Columns("D:D").Select
ActiveSheet.Paste
Range("D2").FormulaR1C1 = "=LEFT(RC1,FIND(""/"",RC1))"
Range("D2").AutoFill Destination:=Range("D2:D11"), Type:=xlFillDefault
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C4:R11C5").CreatePivotTable TableDestination:= _
"[Book1.xls]Sheet1!R1C7", TableName:="ピボットテーブル3", DefaultVersion:= _
xlPivotTableVersion10
With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("名前")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("ピボットテーブル3").AddDataField ActiveSheet.PivotTables( _
"ピボットテーブル3").PivotFields("数量"), "合計 / 数量", xlSum
ActiveWorkbook.ShowPivotTableFieldList = False
End Sub
これをもとに、これから自分のやりたい方向へ改変していきたいと思います。
まずは。。自分のやりたいことを関数を使って実現できるようにならないと話にならないことがわかりました。。。(遅いですが。。)
何をどうしたいのか、考え方や伝え方を教えてくださったみなさま、
ありがとうございました!
|
|