No.2ベストアンサー
- 回答日時:
マクロ(VBA)例です。
仮にデータをSheet1、集計表をSheet2に作成しています。
Sheet1シートタブ上で右クリック→コードの表示→サンプルコード貼り付け→Sheet1上でAlt+F8キー押下→sample実行
概略は、製品&ロットをキーにデータ(製品~出庫)を集計DBに入出庫数を計数して登録、集計表を出力しています。
Sub sample()
Dim DB, wk(3), wk1, rslt, wkey As String, i As Long, j As Long, k As Long
Set DB = CreateObject("Scripting.Dictionary")
'** データ配列作成
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
For j = 0 To 3
If Cells(i, j + 1) <> "" Then
wk(j) = Cells(i, j + 1)
Else
wk(j) = 0
End If
Next
wkey = wk(0) & "," & wk(1)
If Not DB.Exists(wkey) Then
'** 新規データ登録
DB.Add wkey, Join(wk, ",")
Else
'** 登録済み入出庫計数
wk1 = Split(DB(wkey), ",")
wk1(2) = wk1(2) + wk(2)
wk1(3) = wk1(3) + wk(3)
DB(wkey) = Join(wk1, ",")
End If
Next
'** 集計表出力
With Sheets("sheet2")
.Cells.Clear
.Cells(1, "A").Resize(1, 5).Value = Cells(1, "A").Resize(1, 5).Value
wk1 = DB.keys
k = 1
For i = LBound(wk1) To UBound(wk1)
rslt = Split(DB(wk1(i)), ",")
k = k + 1
For j = 1 To 4
If rslt(j - 1) <> "0" Then
.Cells(k, j) = rslt(j - 1)
End If
Next
.Cells(k, "E") = .Cells(k, "c") - .Cells(k, "D")
Next
End With
End Sub
No.1
- 回答日時:
まずデータを製品&ロット順にして、その中をまとめ、最後に在庫計算でよいかと。
基本のループとIf文、最低限のセル参照ができればよいので、入門にはちょうどいい内容だと思いますよ。
1. データをソート@記録
まず、データ範囲を選択。「製品」にカーソル合わせて「Shift+Ctrl+↓→」。キー操作なら、データ行数に関係なく動いてくれます。
んで、ソートは製品>ロット順
2. 1行にまとめる@要プログラミング
製品とロットが上と同じなら、上に合計して、その行は削除。
を上から順に繰り返す。
「製品」がA1だとしたら・・・
'最初のセル(上と比較するので2番目)を選択
Range("A3").Select
'選択したセルが空じゃ無ければループ
Do While Selection <> ""
'製品が同じか?
'※Offset(縦,横)にズレた位置の値と比較
If Selection = Selection.Offset(-1,0) Then
'ロットが同じか?
If Selection.Offset(0,1) = Selection.Offset(-1,1) Then
'todo: 入庫を合計する
'todo: 出庫を合計する
'todo: 選択セルの行を削除
End If
End If
'次のセルを選択
Selection.Offset(1,0).Select
Loop
3. 最後にもう一度上からループで在庫計算。
・・・というかんじで。
細かい部分は書くのを控えました。
選択中のセル(Selection)と、そこから上下左右に移動したセル(Offset)を操作するだけで、けっこう色んなことが出来ます。
そこから徐々にできることを増やせばOK。がんばってみてください。
あと、ブレイクポイント・ステップ実行・ローカルウィンドウなど、VBEには便利な機能がいっぱい。使えるようになると、VBAがかなり簡単になりますよ。
この回答へのお礼
お礼日時:2012/07/13 21:32
selection,offset色々使えそうですね。
有難うございます。
又、色々な便利機能も多そうなので、
少しずつ頑張っていこうと思います。
有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで連続データから、数...
-
excelで1行ごとに一気に削除す...
-
エクセルの画面で十字マークが...
-
複数のセルの入力内容を一度に...
-
エクセル グラフ作成について
-
セルをクリックすると付箋のよ...
-
Excel選択を繰り返すとセルの色...
-
フィルタを解除した後の表示位置
-
エクセルで0を除いて昇順に並...
-
エクセルでカーソルが四方に矢...
-
セルを斜めに選択してカットする
-
excelで図の後ろのセルをマウ...
-
EXCELで不規則的に行の高さを変...
-
セルの選択
-
エクセルで任意のセルをクリッ...
-
エクセルで1つおきに列を削除...
-
Excelオンラインで指定のファイ...
-
ワード 複数選択リストボックス...
-
マウスを動かすと勝手にセルが...
-
エクセルVBAリストボックスに表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelで、スクロールをすると限...
-
エクセルの画面で十字マークが...
-
EXCEL アルファベットと数字の...
-
エクセルで連続データから、数...
-
複数のセルの入力内容を一度に...
-
excelで1行ごとに一気に削除す...
-
エクセル 数値を全て「1」にす...
-
エクセルで任意のセルをクリッ...
-
セルをクリックすると付箋のよ...
-
エクセル 画面上の行数を調節...
-
エクセルでハイパーリンクのU...
-
Excel選択を繰り返すとセルの色...
-
Excelで表のデータを並び替えた...
-
Shift押しながら、矢印ボタンで...
-
ピポットテーブルエラー解決方法
-
エクセルでカーソルが四方に矢...
-
エクセルで1つおきに列を削除...
-
エクセルで0を除いて昇順に並...
-
エクセルVBAでセル範囲のデータ...
-
エクセルでウインドウ枠を固定...
おすすめ情報