Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7715 / 13644 ツリー ←次へ | 前へ→

【37233】在庫管理表を作りたい★ わかば 06/4/26(水) 15:22 質問[未読]
【37234】Re:在庫管理表を作りたい★ Kein 06/4/26(水) 15:45 回答[未読]
【37235】Re:在庫管理表を作りたい★ Statis 06/4/26(水) 16:01 回答[未読]
【37236】Re:在庫管理表を作りたい★ Jaka 06/4/26(水) 16:30 回答[未読]
【37306】Re:在庫管理表を作りたい★ わかば 06/4/28(金) 15:35 お礼[未読]

【37233】在庫管理表を作りたい★
質問  わかば  - 06/4/26(水) 15:22 -

引用なし
パスワード
   はじめまして、初心者のわかばです。
早速ですが、在庫管理表を作りたいのですが、a、b2つの物があって、それぞれS、M、Lのサイズがあります。
下記のように使用者を記入した表があるのですが、空欄は使用者がいないことになります(←在庫)

 A   B   C   D
1 サイズ a   サイズ b
2 S   鈴木  S   鈴木
3 S   佐藤  S   佐藤
4 S       S
5 S      M
6 M   山田  M   山田
7 M   伊藤  M   伊藤
8 L   高橋  L   高橋
9 L      L

この在庫の数を下記のような表にしたいのですが…

 A  B  C
1   a  b
2 S  2  1
3 M    1
4 L  1  1

どのように作ればよいのでしょうか。
(可能ならばマクロなしで作りたいです。)
よろしくお願いしますm(_ _)m

【37234】Re:在庫管理表を作りたい★
回答  Kein  - 06/4/26(水) 15:45 -

引用なし
パスワード
   >下記のような表
って、どこをどう集計したら、そのような数値が出てくるのでしょーか ?
単純に考えたらSサイズはa,b共に2件、Mサイズも同様に2件、Lサイズは
a,b共に1件 ということになるはずですよね ?
いちおうそのような計を出すなら、A1セルを選択してメニューの「データ」
「集計」で "グループの基準"を"サイズ"にし、"集計の方法"が"合計"、
"集計するフィールド"を "a"と"b"にチェックして OK で出来ますが。

【37235】Re:在庫管理表を作りたい★
回答  Statis  - 06/4/26(水) 16:01 -

引用なし
パスワード
   こんにちは
最初の表をSheet1とし在庫表をSheet2とします
Sheet2(在庫側)は事前に作成している事。


Sub Test()
Dim Da As Variant, Co As Long, i As Long, ii As Long
Dim Fi As Range, Ad As String, Con As Long

With Worksheets("Sheet2")
   Co = .Range("IV1").End(xlToLeft).Column
   Da = .Range("A2", .Range("A65536").End(xlUp)).Resize(, Co).Value
   Con = 1
   With Worksheets("Sheet1")
     For i = 2 To Co
       For ii = 1 To UBound(Da)
         Set Fi = .Columns(Con).Find(Da(ii, 1), , xlValues, xlWhole)
         If Not Fi Is Nothing Then
           Ad = Fi.Address
           Do
           Set Fi = .Columns(Con).FindNext(Fi)
           If IsEmpty(Fi.Offset(, 1).Value) Then
             Da(ii, i) = Da(ii, i) + 1
           End If
           Loop Until Ad = Fi.Address
           Set Fi = Nothing
         End If
       Next ii
       Con = Con + 2
     Next i
   End With
  .Range("A2", .Range("A65536").End(xlUp)).Resize(, Co).Value = Da
End With
End Sub

【37236】Re:在庫管理表を作りたい★
回答  Jaka  - 06/4/26(水) 16:30 -

引用なし
パスワード
   重くなるかもしれないけど....。

> A  B  C
>1   a  b
>2 S  2  1
>3 M    1
>4 L  1  1
の方の

B2に
=SUMPRODUCT((Sheet1!$A$2:$A$9=$A2)*(Sheet1!$B$2:$B$9=""))

C2に
=SUMPRODUCT((Sheet1!$C$2:$C$9=$A2)*(Sheet1!$D$2:$D$9=""))

B2:C2を選択して、下にフィル。

【37306】Re:在庫管理表を作りたい★
お礼  わかば  - 06/4/28(金) 15:35 -

引用なし
パスワード
   みなさん有難うございました。
お礼が遅くなってすみません…。

Keinさん
私の説明がわかり難くてすみません(^^;)
使用者のいない物の在庫表を作りたかったんです。

Statisさん
ありがとうございます。
早速、書いていただいたマクロをそのままコピーしたら出来ました!
ただ、初心者のため、一つ一つのコードの意味がよくわかりません…(>。<)
これから勉強して理解できるようになりたいと思います。

Jakaさん
希望通り、マクロなしで在庫表ができました(^^)
今回はJakaさんに教えてもらった数式を使用して作成することにしました。
思い通りの表ができて大満足です!
本当に有難うございました☆

7715 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free