advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 19633 for 20�����������������������... (0.004 sec.)
[[20210403103019]]
#score: 2681
@digest: a698515df00eaa1b28b8208ef8c2da2c
@id: 87228
@mdate: 2021-04-03T07:02:04Z
@size: 5944
@type: text/plain
#keywords: 価商 (26586), あ17 (16967), 島三 (16717), あ19 (15739), あ18 (15272), あ16 (14782), 北島 (14385), あ14 (13086), a00001 (13086), あ13 (12488), 号購 (11037), 郎あ (10539), あ15 (10013), 木一 (9278), ーダ (9254), 量単 (9221), あ6 (8863), あ9 (8404), あ8 (7978), あ7 (7707), あ11 (7138), 名数 (6859), あ12 (6668), 目14 (6620), あ4 (6566), 目15 (6527), あ5 (6525), 目13 (5930), 入者 (5914), あ20 (5601), 力行 (5234), あ10 (5079)
『1オーダー1行のデータを1商品1行に変換』(hitomi)
1オーダー1行のデータがあり、各オーダーのT列以降には商品名、数量、単価のセルが、オーダーした商品数だ繰り返されます。 T列より前はそのオーダーの購入商品以外の情報が記載されてます(オーダー番号、購入者名、住所、配達日、時間等) この様なデータを 1行1商品のオーダーデータに変換したいです。 T列までは同じ共通なので、各行にはT列までの情報+1商品分のデータ。 もし1オーダーで30商品購入されてる場合は30行のデータになります。 1シートに数百のオーダーがあり、それを別シートに1行1商品のデータに変換するにはどどのような関数を使えば良いでしょうか? 1オーダーで1商品しか購入してないオーダーもあれば、30商品以上購入してるオーダーもあります。 宜しくお願いします。 < 使用 Excel:Excel2007、使用 OS:Windows10 > ---- >商品数だ繰り返されます。 商品数が30個あったら右へ商品名、数量、単価のセルが30回続くということかな? レイアウト提示したらどうですか。 範囲を指定してコピー、その後ここへ貼り付けて! (kj) 2021/04/03(土) 11:04 ---- A列から右にずーっとあったとして 項目1 項目2 項目3 項目4 項目5 項目6 項目7 項目8 項目9 項目10 項目11 項目12 項目13 項目14 項目15 項目16 項目17 項目18 項目19 項目20 商品名 数量 単価 商品名 数量 単価 商品名 数量 単価 商品名 数量 単価 商品名 数量 単価 商品名 数量 単価 あ1 あ2 あ3 あ4 あ5 あ6 あ7 あ8 あ9 あ10 あ11 あ12 あ13 あ14 あ15 あ16 あ17 あ18 あ19 あ20 a1 5 100 あ2 10 1100 あ3 7 500 あ4 3 800 あ5 3 800 あ6 3 800 い1 い2 い3 い4 い5 い6 い7 い8 い9 い10 い11 い12 い13 い14 い15 い16 い17 い18 い19 い20 b1 3 1000 う1 う2 う3 う4 う5 う6 う7 う8 う9 う10 う11 う12 う13 う14 う15 う16 う17 う18 う19 う20 c1 8 10 c2 11 100 ひたすら数合わせをすれば↓こんな感じになるにはなりますけど、、、 項目1 項目2 項目3 項目4 項目5 項目6 項目7 項目8 項目9 項目10 項目11 項目12 項目13 項目14 項目15 項目16 項目17 項目18 項目19 項目20 商品名 数量 単価 あ1 あ2 あ3 あ4 あ5 あ6 あ7 あ8 あ9 あ10 あ11 あ12 あ13 あ14 あ15 あ16 あ17 あ18 あ19 あ20 a1 5 100 あ1 あ2 あ3 あ4 あ5 あ6 あ7 あ8 あ9 あ10 あ11 あ12 あ13 あ14 あ15 あ16 あ17 あ18 あ19 あ20 あ2 10 1100 あ1 あ2 あ3 あ4 あ5 あ6 あ7 あ8 あ9 あ10 あ11 あ12 あ13 あ14 あ15 あ16 あ17 あ18 あ19 あ20 あ3 7 500 あ1 あ2 あ3 あ4 あ5 あ6 あ7 あ8 あ9 あ10 あ11 あ12 あ13 あ14 あ15 あ16 あ17 あ18 あ19 あ20 あ4 3 800 あ1 あ2 あ3 あ4 あ5 あ6 あ7 あ8 あ9 あ10 あ11 あ12 あ13 あ14 あ15 あ16 あ17 あ18 あ19 あ20 あ5 3 800 あ1 あ2 あ3 あ4 あ5 あ6 あ7 あ8 あ9 あ10 あ11 あ12 あ13 あ14 あ15 あ16 あ17 あ18 あ19 あ20 あ6 3 800 い1 い2 い3 い4 い5 い6 い7 い8 い9 い10 い11 い12 い13 い14 い15 い16 い17 い18 い19 い20 b1 3 1000 う1 う2 う3 う4 う5 う6 う7 う8 う9 う10 う11 う12 う13 う14 う15 う16 う17 う18 う19 う20 c1 8 10 う1 う2 う3 う4 う5 う6 う7 う8 う9 う10 う11 う12 う13 う14 う15 う16 う17 う18 う19 う20 c2 11 100 本当はトランスポウズを使って拡張したらいいんでしょうけど。。。 3つの時の数合わせです。 参考にして頂けたら幸いです。。。参考にならんか_| ̄|○ Option Explicit Sub てすと() Dim MyAry As Variant Dim MyA As Variant Dim i As Long Dim j As Long Dim jj As Long Dim jx As Long Dim k As Long Dim n As Long MyA = Sheets("Sheet1").Range("A1").CurrentRegion.Value ReDim MyAry(1 To ((UBound(MyA, 2) - 20) / 3) + 4, 1 To 20 + 3) k = 1 For j = 1 To 20 + 3 MyAry(1, j) = MyA(1, j) Next For i = LBound(MyA, 1) + 1 To UBound(MyA, 1) For j = 21 To UBound(MyA, 2) n = 0 If (MyA(i, j) <> "") * (MyA(1, j) = "商品名") Then k = k + 1 For jj = LBound(MyA, 2) To 20 MyAry(k, jj) = MyA(i, jj) Next For jx = 21 To UBound(MyAry, 2) MyAry(k, jx) = MyA(i, j + n) n = n + 1 Next End If Next Next With Sheets("Sheet2") .Cells.Clear .Range("A1").Resize(UBound(MyAry, 1), UBound(MyAry, 2)).Value = MyAry End With Erase MyA, MyAry End Sub (SoulMan) 2021/04/03(土) 11:28 ---- (kj) 様 ありがとうございます! 教えて教えて頂いた方法でチャレンジしてみます! (hitomi) 2021/04/03(土) 13:51 ---- 回答してくれたのはSoulManさんです。 私はあなたに質問しただけです。 (kj) 2021/04/03(土) 14:57 ---- たぶんこういうことでしょう _______A_________B____...____T________U_______V________W________X_______Y________Z_______AA_______AB________ 1 オーダー番号 購入者名 商品名1 数量1 単価1 商品名2 数量2 単価2 商品名3 数量3 単価3 2 A00001 鈴木一郎 ああ 10 100 いい 20 50 うう 10 1000 3 A00002 佐藤二郎 いい 30 50 4 A00003 北島三郎 ああ 40 100 うう 5 1000 ↓ _______A_________B____...____T________U_______V____ 1 オーダー番号 購入者名 商品名 数量 単価 2 A00001 鈴木一郎 ああ 10 100 2 A00001 鈴木一郎 いい 20 50 2 A00001 鈴木一郎 うう 10 1000 2 A00002 佐藤二郎 いい 30 50 2 A00003 北島三郎 ああ 40 100 2 A00003 北島三郎 うう 5 1000 >どのような関数を使えば良いでしょうか 関数でもできるかもしれませんが、ちょっと私には思いつかなかったのでマクロ案 Sub 研究用() Dim データ行 As Long, 出力行 As Long Dim 列 As Long Stop 'ブレークポイントの代わり 出力行 = 2 With Worksheets("データ") For データ行 = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row For 列 = 20 To .Cells(データ行, .Columns.Count).End(xlToLeft).Column Step 3 Union(.Cells(データ行, "A").Resize(, 19), .Cells(データ行, 列).Resize(, 3)).Copy Worksheets("別シート").Cells(出力行, "A") 出力行 = 出力行 + 1 Next 列 Next データ行 End With End Sub マクロに抵抗がなければ研究してみてはどうでしょうか。 (もこな2) 2021/04/03(土) 16:02 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202104/20210403103019.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97024 documents and 607982 words.

訪問者:カウンタValid HTML 4.01 Transitional