[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データの集約?』(エクセル初心者)
個人会社の事務員です。
週に一回提出する表を作成しているのですがすごく手間がかかって困っています
。
前任者の方は、エクセルが得意だったらしく5分で作成していた様で
毎回一時間かかっているのを注意されています。
現場の方からシステム?で出力した表頂き
加工して作っているのですがそろそろ限界ですので
どなたかアドバイス下さい。
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P
日付,品名1,品名2,購入先,購入時間,購入金額,×,×,×,×,購入者,
備考1,備考2,×,購入先名,購入先略称
2014/11/3,野菜,トマト,フレスコ,10:00,130,,,,,田中,傷んでた,交
換した,,フレスコ,F
↓データは2行目開始で200〜400行続く
現状このような操作をしています。
1)K列の購入者でソートし、購入者毎(10名前後)にシートを作る
2)Dの購入先を略称に変換する
(MAX40種類でO列P列に2行目から41行目まで入力してあります)
3)ABC列をまとめてソートする為、関数で纏める
4)R列に購入者を表示する
5)S列に購入先略称+購入時間+購入金額を表示する(F_10:00(130))
関数は=D2&"_"&HOUR(E2)&TEXT(MINUTE(E2),"00")&"("&F2&")"で入れていま
す。
6)T列に品名1を表示する
7)T列については、上行と同じデータは表示を消す
ただし、ABCが同じ場合のみで変われば消さない。
8)UV列には備考1と備考2を表示する
ただし、ABCが同じ場合のみで変われば消さない。
2〜7)は各シートで同じ事をしておりマクロ化したいのですが
さっぱりわかりません。
変換を一度マクロの記録でやってみたのですが購入先が変わるのでうまくいきませんでした
変換の簡素化や、表示を消す等少しでも構いませんのでどなたかアドバイス下さい。
よろしくお願いいたします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
Sub test()
Dim DIC As Object
Dim i As Long
Dim j As Long
Dim cw As String
Dim Keys As Variant
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set DIC = CreateObject("Scripting.Dictionary")
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name <> Me.Name Then
Sheets(i).Delete
End If
Next i
Range("A1").CurrentRegion.SortSpecial Header:=True, _
Key1:=Range("k1"), Order1:=xlAscending
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
cw = Cells(i, "K").Value
If Not DIC.Exists(cw) Then
DIC.Add cw, cw
End If
Next i
Keys = DIC.Keys
For i = 0 To DIC.Count - 1
Sheets.Add after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Keys(i)
Rows(1).Copy Sheets(Sheets.Count).Range("A1")
Next i
Range("A1").CurrentRegion.SortSpecial Header:=True, _
Key1:=Range("a1"), Order1:=xlAscending, _
Key2:=Range("d1"), Order2:=xlAscending, _
Key3:=Range("e1"), Order3:=xlAscending
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
cw = Cells(i, "K").Value
For j = 0 To DIC.Count - 1
If cw = Keys(j) Then
With Sheets(Keys(j))
Rows(i).Copy .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0)
End With
Exit For
End If
Next j
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
(???) 2014/11/26(水) 17:45
マクロを実行したシート以外を全部削除後、購入者別シートを作成します。
略称への変換や、品名の連結等は未対応ですが、関数式でトライしてみてください。
(???) 2014/11/27(木) 15:47
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.