[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エクセルの表から取込用データを作りたい』(yingli)
初め質問させていただきます。
下記の様なエクセル表があります。
出庫日 納品日 得意先 納品先 規格1 規格2・・ 数量計 配送便 販売単価
3/25 3/26 A B 2 1 3 C 1000
このようなデータが出庫日ごとにあり、作り変える単位は出庫日です。
ここから↓のように規格を1列にした取込データを作りたい。
得意先 納品先 出庫日 納品日 規格 数量 配送便 販売単価
A B 3/25 3/26 規格1 2 C 1000
A B 3/25 3/26 規格2 1 C 1000
規格は最高で14個あります。
同じ出庫日のデータは毎日数が違います。
マクロで変換したいのですが、やり方がわかりません。
宜しくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows8 >
規格2・・ とありますが、ここを正確に教えてください。 規格列はどこまであるのか? 数量計列はどこなのか?
(β) 2017/03/25(土) 15:17
エクセルの表で規格はG列〜T列まであり、数量計はU列にあります。
A列 出庫日
B列 納品日
C列 得意先コード
D列 得意先名
E列 納品先コード
F列 納品先名
G列〜T列 規格
U列 数量計
V列 配送コード
W列 配送便名
X列 配送賃
Z列 販売単価
説明がわかりづらくすいません、宜しくお願いします!
(yingli) 2017/03/25(土) 16:34
出来上がりの表、どいういった使い道があるのか よくわかりませんけど、 こういうことでしょうか?
Sub Sample() Dim sh1 As Worksheet Dim v As Variant Dim n As Long Dim x As Long Dim r As Range Dim c As Range
Set sh1 = Sheets("Sheet1") '★元シート
With sh1.Range("A2", sh1.Range("A" & Rows.Count).End(xlUp)).Columns("A:W") n = WorksheetFunction.CountA(.Columns("E:T")) ReDim v(1 To n, 1 To 8) For Each r In .Rows For Each c In r.Range("E1:T1") If c.Value <> "" Then x = x + 1 v(x, 1) = r.Range("C1").Value v(x, 2) = r.Range("D1").Value v(x, 3) = r.Range("A1").Value v(x, 4) = r.Range("B1").Value v(x, 5) = c.Value v(x, 6) = r.Range("U1").Value v(x, 7) = r.Range("V1").Value v(x, 8) = r.Range("W1").Value End If Next Next End With
With Sheets("Sheet2") '★展開シート .Cells.ClearContents .Range("A1:H1").Value = Array("得意先", "納品先", "出庫日", "納品日", "規格", "数量", "配送便", "販売単価") .Range("A2").Resize(UBound(v, 1), UBound(v, 2)).Value = v .Select End With
End Sub
(β) 2017/03/25(土) 17:32
説明が悪くて本当にすいません!
規格の所をもう一度説明させて頂きます。
元表はG列〜T列に規格がありますが、変換後には規格が1列しか無く、
G列〜T列の規格名を1列の規格に並べたいです。
元表の規格の列にあった数量を変換後の数量の列に置きたいです。
どうか宜しくお願い致します!!
(yingli) 2017/03/25(土) 18:05
じゃぁ、こういうことですか。
Sub Sample2() Dim sh1 As Worksheet Dim v As Variant Dim x As Long Dim r As Range Dim c As Range
Set sh1 = Sheets("Sheet1") '★元シート
With sh1.Range("A2", sh1.Range("A" & Rows.Count).End(xlUp)).Columns("A:W") ReDim v(1 To .Cells.Count, 1 To 8) For Each r In .Rows For Each c In r.Range("E1:T1") x = x + 1 v(x, 1) = r.Range("C1").Value v(x, 2) = r.Range("D1").Value v(x, 3) = r.Range("A1").Value v(x, 4) = r.Range("B1").Value v(x, 5) = c.EntireColumn.Cells(1).Value v(x, 6) = c.Value v(x, 7) = r.Range("V1").Value v(x, 8) = r.Range("W1").Value Next Next End With
With Sheets("Sheet2") '★展開シート .Cells.ClearContents .Range("A1:H1").Value = Array("得意先", "納品先", "出庫日", "納品日", "規格", "数量", "配送便", "販売単価") .Range("A2").Resize(UBound(v, 1), UBound(v, 2)).Value = v .Select End With
End Sub
(β) 2017/03/25(土) 18:52
今まで、手入力で毎日膨大な量のデータを入れていたので、
これでとても楽になります。
本当にありがとうございますm(_ _)mm(_ _)m
(yingli) 2017/03/27(月) 10:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.