アプリ版:「スタンプのみでお礼する」機能のリリースについて

excel VBAで項目ごとに別々のシートに転記したい
困り度:
すぐに回答を! excelVBA勉強中の初心者です。
初めて質問させていただきます。
初心者には難しく、行き詰ってしまいました。
仕事で以下のことがしたく、基本書、参考書などを調べて勉強し作成していっているのですが、身近に教えていただける方もおらず、つまづいております。
詳しい作成方法など、詳しい方にご教授いただければと思います。

book(1) 一ヶ月分の売上データが入っており、
    A列に取引先名
    B列に商品名
    C列に件数
    D列に合計額
    があります(1万行前後)。
book(2) シート1に抽出したい取引先名の一覧(50件ほど)、
     シート2以降は転記用でA列に商品の一覧(固定)、
     例えば4月分であればB列に件数、C列に金額、
    5月分であればD列に件数、E列に金額・・と一年間使用するため、件数・金額は12か月分用意してあります。
     シート1にある抽出したい取引先ごとに作成しています。

(1)の売上データを、(2)にあるシート1の取引先一覧と一致するものを抽出して、取引先ごとに分けてあるシートに転記したいのです。


※(1)の売上データには抽出不要の取引先も多数含まれています。
※(1)の売上データは同じレコードが存在する場合もありますが、すべて別々のものとみなし、転記先シートには件数・金額ともに合計を表示したい

以上です。
よろしくお願いします。

A 回答 (3件)

ANo.2です。



4月・5月・・・をどのように判断するのか不明ですし、エラー処理もしてません。
従って4月の位置(B列・C列)に書き込むだけです。
またセルの配置があっているか自信はありません。

Sub try()
Dim Dic As Object
Dim wb As Workbook
Dim r As Range, rr As Range
Dim i As Long
Dim st As String
Dim v, w, n, key

Set Dic = CreateObject("Scripting.Dictionary")
Set wb = Workbooks("Book2.xls")

With wb.Worksheets("Sheet1")
Set r = .Range(.[A2], .Cells(Rows.Count, 1).End(xlUp))
End With

With Workbooks("Book1.xls").Worksheets("Sheet1")
v = .Range(.[A2], .Cells(Rows.Count, 4).End(xlUp)).Value
For i = 1 To UBound(v, 1)
st = v(i, 1) & "_" & v(i, 2)

If Not Dic.Exists(st) Then
Dic(st) = Array(v(i, 3), v(i, 4))
Else
Dic(st) = Array(Dic(st)(0) + v(i, 3), Dic(st)(1) + v(i, 4))
End If

Next
End With

For Each key In Dic.keys
w = Split(key, "_")
n = Application.CountIf(r, w(0))

If n > 0 Then
With wb.Worksheets(w(0))
Set rr = .Range(.[A3], .Cells(Rows.Count, 1).End(xlUp))
n = Application.Match(w(1), rr, 0)

If IsNumeric(n) Then
.Range("B" & n + 2).Resize(1, 2).Value = _
Application.Transpose(Application.Transpose(Dic(key)))
End If

End With
End If

Next

Set Dic = Nothing
Set wb = Nothing
Set r = Nothing
Set rr = Nothing
Erase v
End Sub

ご参考になるかどうか。。。?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
詳細のコードまで考えていただき、大変感謝しております。
月の判別は自分にとってはまだまだ次の課題でまずひと月分の集計・転記を理解しなければ、と思っています。
早速教えて頂きましたコードを参考にして頑張ってみたいと思います。
素早い回答とアドバイス、本当にありがとうございました。

お礼日時:2008/11/16 11:11

Ano.1です。



どのような形式のデータから、どのような形式に纏めたいのかよくわかりません。
例えばbook1のどこから、book2の4月分とか5月分とか・・・になるとか。

たぶんですけど、文章よりシート構成を提示された方が良いのかもしれません。
または実務に早急に必要な事であるのなら、勉強とは切り分けて上司に相談されるのが宜しいかと。(外注委託等々)

ちなみに同じ項目毎に集計をしていく方法では、私はDictionaryオブジェクトを使用してます。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
ご参考になれば幸いです。

この回答への補足

ご回答ありがとうございます!
Dictionaryオブジェクトですが、早速調べてみたいと思います。
なにか理解につながるきっかけでもなんでも欲しい、と思っていましたので大変ありがたいです!

シート構成を簡単ですが作ってみました。
********************************

book(1) 売上実績のデータ

     
<A> <B> <C> <D>
取引先 商品名 件数  金額
エ会社 色鉛筆  3  1200
ビ商会 色鉛筆  4  1600
エ会社 消ゴム  6  300
シー屋 定規大  8  4000
ビ商会 メモ帳   5  500
エ会社 色鉛筆  5  2000
シー屋 定規小  6  2400
デ会社 消ゴム  10  500
 ・     ・     ・    ・
 ・     ・     ・    ・
 ・     ・     ・    ・
ひとつの取引先でも同じ商品名での売上が複数あります。

例) エ会社→  色鉛筆  3  1200
            色鉛筆  5  2000  など

この場合、転記先には8件・3200円と転記したい


********************************

book(2)  取引先、商品の一覧、転記用シートを用意
      こちらにコードを書いていっています。
      

●シート1●


<A>       <D>
取引先一覧    商品一覧
エ会社       消ゴム
シー屋       定規小
デ会社       定規大
 ・           ・ 
 ・           ・
 ・           ・  
<A>には、抽出したい取引先のみ一覧となっている
<D>には、すべての商品一覧で、シート2のA列と同じ


●シート2以降●


        ≪4月分≫       ≪5月分≫ ・・・・
<A>   <B>   <C>   <D>   <E>・・・・
商品一覧  件数    金額    件数    金額
消ゴム  
定規小
定規大
 ・
 ・
 ・
シート1のA列にある取引先一覧にあるものをシート別にしたもので、
様式・商品一覧はどのシートもすべて同じものを使用しています。
4月、5月・・と一年分を用意してありますが、1回にくるデータはひと月分なので5月分がきたら5月分の列に転記、6月分なら6月分の列へ・・といった感じです。
  

補足日時:2008/11/15 23:01
    • good
    • 0

出来ている範囲だけでも(例え上手く動かなくても)提示された方がいいかもしれません。



あとbook(2)のシート2以降のA列に商品の一覧があって、シート1に取引先名があると言うのであれば、
取引先毎の商品名には重複はない?のか、或いは結びつけるリスト等は存在しないのか?
ちょっと疑問に感じました。

この回答への補足

ご回答ありがとうございました。
説明不足で申し訳ありません。
book(2)の取引先一覧の横に商品名の一覧もあり、
この商品名一覧はどの取引先にも共通で、シート(2)以降すべてのシートのA列に同じものを載せています。
また、シート(2)以降の取引先別シートはシートタブとセルA1のみに取引先一覧からもってきた取引先名を入れおり、他はすべて同じ内容です。
book(1)のデータ内のには一つの取引先にも同じ商品名が複数あり、その件数と金額のそれぞれ合計をbook(2)に転記できれば、と思います。
今の段階では、
・book(2)の取引先一覧から各シートを作成して、シート名をつける
・データそのものがCSVでくるのでそれをを開いて不要な列などを削除し、book(1)とする
とまでしかできておらず、肝心の集計のところでつまづいています。
繰り返し検索・抽出・転記ということでFor~Next、Do~Loopなど使えばよいのか?と思ってやってみてはいるのですが、シートを選択して転記、という条件がよく理解できず、うまくつながらないようで・・。
知識も実践もなくお恥ずかしいのですが、何を使えばよいのかいまいちよくわかりません。
アドバイスでも良いので是非お願いします!

補足日時:2008/11/15 20:12
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!