[[20170325133432]] 『エクセルの表から取込用データを作りたい』(yingli) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルの表から取込用データを作りたい』(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.