Excel VBA質問箱 IV

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

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


65981 / 76738 ←次へ | 前へ→

【15323】Re:セル内容をORで調べる方法
回答  ichinose  - 04/6/21(月) 19:47 -

引用なし
パスワード
   みぃこ さん、IROC さん
こんばんは。
>セル内容をORで調べる指定の仕方があれば、ご教授お願いします。内容は下記の通りです。
>事務用品類の購入記録の集計をしています。
>A列:発行No.、B列:費目コード、C列:メーカー、D列:品名、E列:品番、
>F列:数量、G列:単位、H列:金額、I列:発注日、J列:納入日
>という項目を持つ、45行(タイトル行は別)の表を各月ごとにシート分けして
>作っています。ご参考までに、そのままコピーできなくて分かりにくいですが、
>6月分はこんな感じです。
>
>No.  費目コード  メーカー   品     名       型  番      数量   単位      金額    発注日  納品日
>-    5202    コクヨ     KB用紙(A4)      KB−S39N     5    箱     6,750     6/1    6/2
>-    5201    キング     カラーインデックス     No.907       1    箱     4,060     6/1    6/3
>-    5201    コクヨ     フラットファイル      フ−V10(B)    20    冊      840     6/1    6/3
>119   5202    コクヨ     KB用紙(レター)     KB−L31TN    1    箱     4,712     6/2    6/4
>     5201    コクヨ     チューブファイル      フ−E633(B)   5    冊     5,200     6/2    6/4
>-    5201    コクヨ     フラットファイル      フ−V10(P)   20    冊      840     6/3    6/4
>-    5201    キング     テプラテープ        SS12K       1    個      560     6/3    6/4
>-    5207    川崎E     社名入り封筒        角2サイズ      100    枚     1,060     6/3    6/10
>-    5202    コクヨ     KB用紙(A4)      KB−S39N     5    箱     6,750     6/7    6/9
>
>
>このうち、B列の費目コードが「5201」のものについての内訳を「集計」シートの
>別表に集計するようにしたいのですが、指定の仕方がよく分かりません。
>
>D列の品名に「ファイル」という文字を含めば、「ファイル類」、「インデックス」または「仕切」という文字を含めば「インデックス類」、「ペン」または「マーカー」という文字を含めば筆記具…という風に 品目のカテゴリーごとに月別の金額をまとめたいと思っています。
見せていただいたコードを修正しました。


'===============================================================
Sub test()
  tuki = Month(Now)
  Worksheets(MonthName(tuki)).Activate
  For i = 0 To 45
   If Cells(2 + i, 2) = "5201" Then
    With Cells(2 + i, 4)
      If .Value Like "*ファイル*" Then
       ファイル類 = ファイル類 + Cells(2 + i, 8).Value
      ElseIf .Value Like "*インデックス*" Or .Value Like "*仕切*" Then
       インデックス類 = インデックス類 + Cells(2 + i, 8)
      ElseIf .Value Like "*ペン*" Or .Value Like "*マーカー*" Then
       筆記具 = 筆記具 + Cells(2 + i, 8)
      ElseIf .Value Like "*消*" Or .Value Like "*修正*" Then
       修正具 = 修正具 + Cells(2 + i, 8)
      ElseIf .Value Like "*メモ*" Or .Value Like "*ノート*" Then
       紙製品 = 紙製品 + Cells(2 + i, 8)
      ElseIf .Value Like "*のり*" Or .Value Like "*メンディング*" Then
       接着用品 = 接着用品 + Cells(2 + i, 8)
      ElseIf .Value Like "*クリップ*" Or .Value Like "*マグネットボックス*" Then
       クリップ類 = クリップ類 + Cells(2 + i, 8)
      ElseIf .Value Like "*テプラ*" Or .Value Like "*ネームランド*" Then
       ラベルテープ = ラベルテープ + Cells(2 + i, 8)
      Else
       その他 = その他 + Cells(2 + i, 8)
       End If
      End With
    End If
   Next i

  Worksheets("集計").Activate
  If tuki >= 4 Then
   j = tuki - 1
  Else
   j = tuki + 11
   End If
  Cells(34, j).Value = ファイル類
  Cells(35, j).Value = インデックス類
  Cells(36, j).Value = 筆記具
  Cells(37, j).Value = 修正具
  Cells(38, j).Value = 紙製品
  Cells(39, j).Value = 接着用品
  Cells(40, j).Value = クリップ類
  Cells(41, j).Value = ラベルテープ
  Cells(42, j).Value = その他
End Sub
ですが・・・・。

集計と言うシートに予め数式を入力しておく方法もありますよ。
例題として
6月の「ファイル類」なら、セルE34に

=SUM(IF('6月'!$B2:$B47=5201,IF(('6月'!$D$2:$D$47<>SUBSTITUTE('6月'!$D$2:$D$47,"ファイル","")),'6月'!$H$2:$H$47)))

数式は、配列数式ですから、数式入力後、セルから抜けるときはEnterキーではなく、
Ctrl+Shift+Enterキーです。

もうひとつ「インデックス類」なら、セルE35に

=SUM(IF('6月'!$B2:$B47=5201,IF(('6月'!$D$2:$D$47<>SUBSTITUTE('6月'!$D$2:$D$47,"インデックス",""))+('6月'!$D$2:$D$47<>SUBSTITUTE('6月'!$D$2:$D$47,"仕切",""))>0,'6月'!$H$2:$H$47)))

これも配列数式ですから、Ctrl+Shift+Enterキーでセルを確定します。

9*12=108式 程度なら、配列数式でも十分だと思いますし、

それぞれの月のシートの変更も集計シートに反映されますよ!!

確認してみて下さい。
3 hits

【15319】セル内容をORで調べる方法 みぃこ 04/6/21(月) 16:35 質問
【15321】Re:セル内容をORで調べる方法 IROC 04/6/21(月) 17:12 回答
【15323】Re:セル内容をORで調べる方法 ichinose 04/6/21(月) 19:47 回答
【15360】Re:セル内容をORで調べる方法 みぃこ 04/6/22(火) 14:29 お礼
【15414】Re:VBAではありませんが… みぃこ 04/6/24(木) 10:43 質問
【15440】Re:VBAではありませんが… ichinose 04/6/24(木) 20:05 発言
【15443】Re:VBAではありませんが… ichinose 04/6/24(木) 22:00 発言
【15448】Re:VBAではありませんが… みぃこ 04/6/25(金) 9:19 お礼

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