[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『統合で左から2列までの項目を固定』(匿名)
シート毎に、A1に「商品コード」、B1に「商品名」、c1に「1月」「2月」「3月」←ここはシートごとに違う
A2〜10に実際の商品コード、B2〜10に実際の商品名、C2〜10に実際の売上金額がある表があります。
表の1行目の項目以外の中身はレイアウトはバラバラです。
(商品があったりなかったり)
そこで、月別の商品別の合計金額を出すために統合させると、1行目の項目はもちろん表示されますが、
商品名の列(B列)の中身だけがすべて空白になっています。
要するに、左から2列の商品コードと商品名は固定にしたいのですが
どうやればできるのでしょうか。
説明下手ですみません。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
sheet1
A B C
1 商品コード 商品名 1月
2 1 本 2,000
3 2 鉛筆 500
4 3 消しゴム 800
5 4 ハサミ 1,000
sheet2
A B C
1 商品コード 商品名 2月
2 2 鉛筆 100
3 3 消しゴム 50
4 4 ハサミ 80
↓
sheet3 統合用
A B C D
1 商品コード 商品名 1月 2月
2 1 2,000
3 2 500 100
4 3 800 50
5 4 1,000 80
とB列の値が空白になってしまいます。
商品名までも合計してしまっているのでしょうか。結果文字列のため合計できないから空白に?
A列とB列までを見出しにしたいのですが。
一番左端しか見出しにはできないのでしょうか。
(匿名) 2016/10/21(金) 20:25
ありがとうございます。VLOOKUPですか。
すみません、商品コード一覧を手早く作成する方法はありますでしょうか。
シートは12カ月分12枚あります。レコードは3000件くらいあります。
頭が固くて、私が思いつく方法は、シートすべての表を縦にコピペしていって(3000件×12シート)
重複したレコードをどうにかして削除するという方法しかおもいつかないのですが。
(匿名) 2016/10/21(金) 22:31
↑ここが、参考になりそうですよ!!
(通りすがり) 2016/10/22(土) 08:34
早速のご回答をありがとうございました。
マクロを使えば早いですね。このマクロは汎用性がありそうですし、意味を理解して作成してみます。
(匿名) 2016/10/22(土) 11:40
Dim myDic As Object, myKey As Variant Dim c As Variant, varData As Variant Set myDic = CreateObject("Scripting.Dictionary") With Worksheets("Sheet1") varData = .Range("A1", .Range("A" & Rows.Count).End(xlUp)).Value End With For Each c In varData If Not c = Empty Then If Not myDic.Exists(c) Then myDic.Add c, Null End If End If Next myKey = myDic.Keys With Worksheets("Sheet2") .Range("G:G").ClearContents .Range("G1").Resize(myDic.Count) = Application.WorksheetFunction.Transpose(myKey) End With Set myDic = Nothing End Sub
重複を、取り除いてくれます!
(通りすがり) 2016/10/22(土) 19:02
こっち [[20161022121804]] の回答を応用してみました。
Option Explicit
Sub test() Dim dst As Range Dim ws As Worksheet Dim ary() Dim n As Long
Set dst = Worksheets("統合用").Cells(1) dst.CurrentRegion.ClearContents
For Each ws In Worksheets If ws.Name <> dst.Parent.Name Then n = n + 1 ReDim Preserve ary(1 To n) ws.Columns(1).Insert With ws.Cells(1).CurrentRegion .Resize(, 1).FormulaR1C1 = "=RC[1]&CHAR(9)&RC[2]" ary(n) = .Address(True, True, xlR1C1, True) End With End If Next
dst.Consolidate _ Sources:=ary, _ Function:=xlSum, _ TopRow:=True, _ LeftColumn:=True
Set dst = dst.CurrentRegion.Columns(1) dst.Offset(1, 1).Resize(, 2).ClearContents
dst.Offset(1).TextToColumns _ Destination:=dst.Offset(1, 1), _ DataType:=xlDelimited, _ Tab:=True
Set dst = dst.CurrentRegion Set dst = Intersect(dst, dst.Offset(, 3))
dst.Sort _ Key1:=dst.Rows(1), _ Order1:=xlAscending, _ Header:=xlNo, _ Orientation:=xlLeftToRight
For Each ws In Worksheets ws.Columns(1).Delete Next
End Sub
(マナ) 2016/10/22(土) 21:12
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.