[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで条件抽出したデータを別ファイルの表に値貼付』(焦思)
仕事で必要に迫られ今日中にマクロを作成しなければいけないため大変困っております。
自分にはとても手に負えない状態です。
どなたかご教示頂けないでしょうか。
よろしくお願い致します。
(使用するファイル)
1.データファイル
2.表ファイル(マクロを含む)
(概要)
1ファイル作成するにあたり、最大50パターンの抽出条件が必要となります。
7ファイルを作成する必要があります。
1.まず、データファイルのC列(店舗/文字列)を「 1 」に指定します。(1〜7の判定が必要です。)
2.次に、データファイルのD列(担当者/文字列)を「10」に指定します。(1〜10の判定が必要です。)担当
3.さらに、データファイルのE列(商品名/文字列)を「1」に指定します。(1〜5の判定が必要です。)
4.最後に、1.〜3.で指定した抽出条件でA列〜L列(全て文字列)を
別ファイルの表に指定範囲内(例 E4:M5)で値貼付します。
範囲内の中に既に貼付けたデータがある場合には直下に値貼付けします。
5.判定が終了したらファイルを保存し、閉じます。
値貼付する表は以下となります。
ファイル名:「1」店舗
1 2 3 4 5 (←データファイルE列と判定が一致) 10 E4:M5 N4:V5 W4:AE5 AF4:AN5 AO4:AW5 9 E6:M8 N6:V8 W6:AE8 AF6:AN8 AO6:AW8 8 E9:M10 N9:V10 W9:AE10 AF9:AN10 AO9:AW10 7 E11:M14 N11:V14 W11:AE14 AF11:AN14 AO11:AW14 6 E15:M24 N15:V24 W15:AE24 AF15:AN24 AO15:AW24 5 E25:M34 N25:V34 W25:AE34 AF25:AN34 AO25:AW34 4 E35:M54 N35:V54 W35:AE54 AF35:AN54 AO35:AW54 3 E55:M74 N55:V74 W55:AE74 AF55:AN74 AO55:AW74 2 E75:M80 N75:V80 W75:AE80 AF75:AN80 AO75:AW80 1 E81:M90 N81:V90 W81:AE90 AF81:AN90 AO81:AW90 (↑データファイルのD列と判定が一致)
(貼付例)
1 E列 F列 G列 H列 I列 J列 K列 L列 10 × × × × × × × ×
拙い説明で大変申し訳ございませんが
何卒宜しくお願い致します。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
>>仕事で必要に迫られ今日中にマクロを作成しなければいけないため大変困っております。
それは大変ですねぇ・・・しかしながら。
まず、関連ファイルのレイアウトがどうなっているのか、さっぱりわかりませんね。 タイトル行があるとかないとか、どんな項目がどのように配置されているのか。 急ぎで回答をもらいたいなら、サンプルレイアウトをアップしてください。
>>1ファイル作成するにあたり、最大50パターンの抽出条件が必要となります。
その50パターンが、どんなパターンなのか、よくわかりません。
>>1.まず、データファイルのC列(店舗/文字列)を「 1 」に指定します。(1〜7の判定が必要です。)
指定するというのは、どこかのセルに 1 をいれるのですか? それとも、マクロ内で 1〜7 を順番に与えて抽出するのですか?
●なんとなく、それぞれの組み合わせで抽出したデータを、該当の店別ファイルに追加していくんだとは思うんですが。
●ファイル名:「1」店舗 サンプルの右端に 10,9,8,・・・とありますが、これは何でしょうかね? 同様に、一番上に 1,2,3,・・・とありますけど、これは何でしょうかね?
●貼り付け例の説明もなんだかよくわかりません。
●データファイル、表ファイル(マクロブック?)、ファイル名:「1」店舗 等の 店舗ファイルの関連がよくわかりませんねぇ。
●マクロ実行時には、関連ファイルはすべて開かれているのでしょうか? それとも、自動で開くのでしょうか? 自動で開くとしたら、それらファイルは、どのフォルダに入っているのでしょうか?
(β) 2016/02/14(日) 12:32
なんとなく、50パターンの意味がわかりました。
元のデータファイルから 店舗1,2,3〜7 それぞれに 担当者1〜10ごとに商品 1〜5 を組み合わせで50パターン抽出し それを 店舗ファイルに追加するんですかね?
組み合わせによって追加する列が異なるんでしょうか? そのあたりが、店舗 1 の例で たとえば 1 と 10 だった場合に E4:M5 と説明があるんですけど、それと 貼り付け例 の E〜L というのもよくわかりませんね。 そもそも、貼り付ける行は抽出された行数でしょうから E4:M5 というのも、ちょっと ???
(β) 2016/02/14(日) 12:46
オートフィルターやフィルターオプションでの抽出転記が便利だと思いますが 店舗、担当者、商品名 すべて、文字列はいいんですが、データとして 数字 なんですか? たとえば E列の商品名が 文字列の 1 とか 2 となっているんですか?
(β) 2016/02/14(日) 12:53
A B C D E F G H I J K L M N ・ ・ ・ ・ ・ V W ・ ・ ・ ・ AE AF ・ ・ ・ ・ AN AO ・ ・ ・ ・ AW 1 タイトル名 2 項目行1 商品名1(E列〜M列) 品名2(N列〜V列) 商品名3(W列〜AE列) 商品名4(AF列〜AN列) 商品名5(AO列〜AW列) 項目行2 商品詳細(E列〜M列) 商品詳細(N列〜V列) 商品詳細(W列〜AE列) 商品詳細(AF列〜AN列) 商品詳細(AO列〜AW列) 4 担当者10(4行〜5行目) 番号 商品名 × × × × × × × 5 6 担当者9(6行〜8行目) ・ 8 9 担当者8(9行〜10行目) 10 11 担当者7(11行〜14行目) ・ 14 15 担当者6(15行〜24行目) ・ 24 25 担当者5(25行〜34行目) ・ 34 35 担当者4(35行〜54行目) ・ 54 55 担当者3(55行〜74行目) ・ 74 75 担当者2(75行〜80行目) ・ 80 81 担当者1(81行〜90行目) ・ 90
(焦思) 2016/02/14(日) 14:18
>>4.最後に、1.〜3.で指定した抽出条件でA列〜L列(全て文字列)を >>別ファイルの表に指定範囲内(例 E4:M5)で値貼付します。 >>範囲内の中に既に貼付けたデータがある場合には直下に値貼付けします。
ここがよくわかりません。別ファイルが何者なのかも、ぼんやりしているんですが、それよりも
E〜M というのは 9列ですね。 で、元ネタの A〜L は 12列。 E〜M に A〜I を貼り付けるという意味ですか? また、抽出されるものは何行になるかわからないのですが、何行あろうと、最初の 2行だけが貼り付け対象ということですか? で、何行で打ち止めかというのが 担当者別に決まっている?
それと、各ファイルの関連やフォルダも教えてくださいね。
(β) 2016/02/14(日) 14:46
概要のところに書いてあるのは手順ですよね。
最初から手順を細かく書くよりも、
まず全体として何をしたいかをひと言でいってもらうと、
読んでいいる人は理解しやすいんじゃないかな。
7つのファイルってあるけど、なぜ7つなのかも不明です。
それとファイルの呼び方を統一したほうがいいですね。
ファイル名を書かずにレイアウトと言われてもわかんない。
別ファイルって書かれても分かりません。
(γ) 2016/02/14(日) 15:51
ご返信頂きまして有難うございます。
回答のレスポンスが悪く申し訳ござません。
E〜M というのは 9列ですね。 で、元ネタの A〜L は 12列。 E〜M に A〜I を貼り付けるという意味です>か?
大変失礼いたしました。
抽出条件に必要な項目を値貼付する項目に含めておりました。
申し訳ございません。
データファイルの内容を以下に変更いたしました。
データ抽出条件(A〜C列) 値貼付するデータ(D〜L列)
A B C D 〜 L
店舗フラグ 担当者 商品名 商品詳細・・
また、抽出されるものは何行になるかわからないのですが、何行あろうと、最初の 2行だけが貼り付け対と>いうことですか?
データの内容次第ですが、それぞれ抽出した貼付範囲内に入るように設定しております。
最初の2行の項目は、タイトルと同じ扱いになりますので、
実際に貼付対象となるのは、4行目以降です。
で、何行で打ち止めかというのが 担当者別に決まっている?
はい。決まっています。
レイアウトの「担当者10(4行〜5行目)」という形で表示しております。
例えば、E4にデータが入っている場合は、直下のE5に貼付するようにしたいです。
ファイルの関連は、
会社のネットワークが不安定なため、
自分のPCのデスクトップにてマクロを実行します。
ファイル(データファイルとマクロが入った表ファイル)はすべて開いた状態です。
但し、7店舗のファイルは、新規で作成したいので、
この時点で準備はしない予定です。
店舗、担当者、商品名 すべて、文字列はいいんですが、データとして 数字 なんですか? たとえば E列の商品名が 文字列の 1 とか 2 となっているんですか? 数字なのは、(A列、B列、C列)D列、L列です。
値は、
E列は値です。(例:商品A)
K列の文字列です。(列:↑もしくは↓(矢印)全てについていません。)
大変お手数をお掛けいたしますがよろしくお願い致します。
(焦思) 2016/02/14(日) 15:53
ご返信頂きまして有難うございます。
概要のところに書いてあるのは手順ですよね。 最初から手順を細かく書くよりも、 まず全体として何をしたいかをひと言でいってもらうと、 読んでいいる人は理解しやすいんじゃないかな。
大変失礼いたしました。
全体としましては、
データを7店舗別に分け、担当者が取り扱っている商品詳細を表に貼付(転記)したいです。
7つのファイルってあるけど、なぜ7つなのかも不明です。
店舗が7ヶ所あるため店舗別に表を作成するためです。
それとファイルの呼び方を統一したほうがいいですね。 ファイル名を書かずにレイアウトと言われてもわかんない。 別ファイルって書かれても分かりません。
わかりにくく大変申し訳ありません。
ファイル名の呼び名を以下に変更します。
データファイル → ファイル1
別ファイル/マクロが入った表ファイル → ファイル2
よろしくお願い致します。
(焦思) 2016/02/14(日) 16:10
【本日中に】というタイムリミットから考えると、もう間に合わないでしょうかね。 でも、まだ、わからないところが多々ありますので、コード案を提示するに至っていません。
マクロブックを【表ファイル】と呼んでおられるところも、ちょっと不安です。 マクロブックのどこかのシートに重要な表があるのでしょうか?
いずれにしても関連のファイルのシートのサンプル(できれば、元表から展開された店舗ブックのサンプルも) を提示いただきたいですねぇ。
[[20110209184943]] 『[談]シートレイアウトの投稿どうしてますか?』(momo)
ここに掲載されたmomoさんのユーティリティを使ってアップしてもらえればわかりやすいと思うのですが。
(β) 2016/02/14(日) 17:32
大変ご迷惑をお掛けいたしまして申し訳ございません。
呼び名を統一せず申し訳ございません。
マクロブック(表ファイル)には表のテンプレートのみしかありません。
以前、教わった方にデータ(xlsx)ファイルとテンプレート(表)およびマクロファイル(xlsm)は、
絶対に分けた方がいいと教わったためデータとマクロを分けています。
(焦思) 2016/02/14(日) 18:19
|[A]|[B]|[C]|[D] |[E]|[F] |[G] |[H] |[I] |[J] |[K] |[L] |[M] |[N]|[O] |[P] |[Q] |[R] |[S] |[T] |[U] |[V] |[W]|[X] |[Y] |[Z] |[AA] |[AB] |[AC] |[AD] |[AE] |[AF]|[AG] |[AH] |[AI] |[AJ] |[AK] |[AL] |[AM] |[AN] |[AO]|[AP] |[AQ] |[AR] |[AS] |[AT] |[AU] |[AV] |[AW]
(焦思) 2016/02/14(日) 18:21
[1] | | | |<一覧>| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [2] | | | |商品名 | | 1| | | | | | | | | 2| | | | | | | | | 3| | | | | | | | | 4| | | | | | | | | 5| | | | | | | [3] | | | |担当者 |ID |商品名|詳細1|詳細2|詳細3|詳細4|詳細5|詳細6|詳細7|ID |商品名|詳細1|詳細2|詳細3|詳細4|詳細5|詳細6|詳細7|ID |商品名|詳細1|詳細2|詳細3|詳細4|詳細5|詳細6|詳細7|ID |商品名|詳細1|詳細2|詳細3|詳細4|詳細5|詳細6|詳細7|ID |商品名|詳細1|詳細2|詳細3|詳細4|詳細5|詳細6|詳細7 [4] | | | | 10| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [5] | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [6] | | | | 9| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
(焦思) 2016/02/14(日) 18:22
[7] | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [8] | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [9] | | | | 8| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [10]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [11]| | | | 7| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [12]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [13]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [14]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [15]| | | | 6| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [16]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [17]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
(焦思) 2016/02/14(日) 18:22
[18]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [19]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [20]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [21]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [22]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [23]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [24]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [25]| | | | 5| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [26]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [27]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [28]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
(焦思) 2016/02/14(日) 18:23
[29]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [30]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [31]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [32]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [33]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [34]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [35]| | | | 4| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [36]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [37]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [38]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
(焦思) 2016/02/14(日) 18:24
[39]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [40]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [41]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [42]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [43]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [44]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [45]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [46]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [47]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [48]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [49]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
(焦思) 2016/02/14(日) 18:24
[50]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [51]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [52]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [53]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [54]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [55]| | | | 3| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [56]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [57]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [58]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [59]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [60]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
(焦思) 2016/02/14(日) 18:24
[61]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [62]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [63]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [64]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [65]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [66]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [67]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [68]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [69]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [70]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
(焦思) 2016/02/14(日) 18:25
[71]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [72]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [73]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [74]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [75]| | | | 2| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [76]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [77]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [78]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [79]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [80]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [81]| | | | 1| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
(焦思) 2016/02/14(日) 18:25
[82]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [83]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [84]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [85]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [86]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [87]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [88]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [89]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [90]| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
(焦思) 2016/02/14(日) 18:26
次にデータサンプルを提示します。
|[A] |[B] |[C] |[D] |[E] |[F] |[G] |[H] |[I] |[J] |[K] |[L] [1]|店舗|担当者|商品名|ID |商品名|詳細1|詳細2|詳細3|詳細4|詳細5|詳細6|詳細7 [2]| 1| 8| 1|123456|商品A |○ |× |△ |○ |□ |↑ | 2 [3]| 2| 7| 2|567890|商品B |○ |× |△ |○ |□ |↑ | [4]| 3| 6| 3|012345|商品C |○ |× |△ |○ |□ |↑ | [5]| 4| 6| 4|234567|商品B |○ |× |△ |○ |□ |↓ | 20 [6]| 5| 5| 5|456789|商品B |○ |× |△ |○ |□ |↑ | [7]| 6| 4| 2|789012|商品B |○ |× |△ |○ |□ |↑ | [8]| 7| 3| 3|678912|商品B |○ |× |△ |○ |□ |↑ | 3
大変お手数をお掛けいたしますがよろしくお願い致します。
(焦思) 2016/02/14(日) 18:27
レイアウトアップ ご苦労様です・・・・でも・・・
(焦思) 2016/02/14(日) 18:26 まで10回に分けてアップされたレイアウト、焦思さん自身が見てわかりますか? 少なくともβにはさっぱりわかりません。 また、このレイアウトは、どのファイルのレイアウトですか? 店舗別ファイルですか? でも、店舗別ファイルというのは、どんどん下に追加していくのではなかったですか?
(焦思) 2016/02/14(日) 18:27 でアップされたレイアウトは データファイルですか?
で、マクロブックには、何か重要な表があるのですか? ないのですか?
(β) 2016/02/14(日) 18:34
度々申し訳ありません。
こちらはテンプレートですので、どこの店舗でもありません。
これから新規で作成します。
行を追加していくのではなく、
それぞれの抽出条件を満たした範囲内の箇所に貼付ます。
万が一データ追加する場合は、データが入っている次の箇所(下に)貼り付けます。
2016/02/14(日) 18:27 でアップされたレイアウトは データファイルですか?
はい。データファイルです。
マクロブックは、2016/02/14(日) 18:26 まで10回に分けてアップされたレイアウトのみです。
他に何もないです。
拙い説明で申し訳ありません。
(焦思) 2016/02/14(日) 18:42
表のレイアウトの一部で説明させて頂きます。
|[A]|[B]|[C]|[D] |[E] |[F] |[G] |[H] |[I] |[J] |[K] |[L] |[M] [1]| | | |<一覧>| | | | | | | | | [2]| | | |商品名 | | 1| | | | | | | [3]| | | |担当者 |ID |商品名 |詳細1|詳細2|詳細3|詳細4|詳細5|詳細6|詳細7 [4]| | | | 10|123456|商品名A|○ |× |△ |□ |× |↑ | 10 [5]| | | | | | | | | | | | | [6]| | | | 9|234567|商品名B|○ |× |△ |□ |× | | [7]| | | | | | | | | | | | | [8]| | | | | | | | | | | | |
(店舗は割愛致します。)担当者「10」かつ商品名「1」の場合は、E4にデータ(データは、D列〜L列)を貼付ます。
次のデータが担当者「9」かつ商品名「1」の場合は、E6にデータ(データは、D列〜L列)を貼付ます。
万が一追加で担当者「10」にデータを追加する場合は、
E4には既にデータが存在しますので、
E5に貼り付けます。
(焦思) 2016/02/14(日) 18:51
なんとなく、うすぼんやりと見えてきたような気もします・・・
最初にアップされたレイアウトはマクロブック内に持っている、店舗ブック用のテンプレート。 最後にアップされたのが、データファイル。 データファイルには店舗名も担当者名も商品名もなく、数値のみ。 それを、店舗シートの対象店当社の対象商品領域に上から順番にせと、追加していくということでしたか?
理解が違っていれば早めにお知らせください。
(β) 2016/02/14(日) 19:03
ご返信頂きまして有難うございます。
データファイルの内容によって可変じゃないんですか?
はい。そうです。
あくまで例を出してご説明をしております。
しかも、どの店舗をとっても、担当者別の書き出し位置は固定なんですか?
はい。そうです。
担当者「10」の場合は、商品1は「E4」、商品2は「 N4」、商品3は「W4」、商品4は「 AF4」、商品5は「 AO4」です。
(焦思) 2016/02/14(日) 19:10
本当に分かりにくい説明で申し訳ございません。
最初にアップされたレイアウトはマクロブック内に持っている、店舗ブック用のテンプレート。 最後にアップされたのが、データファイル。
はい。そうです。
ご迷惑をお掛けいたしまして申し訳ございません。
データファイルには店舗名も担当者名も商品名もなく、数値のみ。 それを、店舗シートの対象店当社の対象商品領域に上から順番にせと、追加していくということでしたか?
はい。抽出条件は、数値のみです。
店舗シートの対象担当者の対象商品領域の上から順番に追加することに間違いないです。
大変ご迷惑をお掛けいたしまして申し訳ございません。
何卒宜しくお願い致します。
(焦思) 2016/02/14(日) 19:17
(γ) 2016/02/14(日) 19:37
曖昧な回答で申し訳ございません。
可変します。
担当者が「10」から「1」までいるとは限りませんし、商品1〜5まであるとも限りません。
(焦思) 2016/02/14(日) 19:50
もうひとつは、そうして作ったものは、
店舗別に統一する必要はないと考えてよいのですね。
(つまり、
店舗1では、担当者9は10行目
店舗2では、担当者9は12行目
とかいうことはあるのですね。)
(γ) 2016/02/14(日) 19:56
はい。そうです。
データがない場合は、
対象範囲内の一番上に貼り付けます。
データが既にある場合は、
対象範囲内のデータが入っている下の行に
貼り付けます。
(焦思) 2016/02/14(日) 20:21
また、担当者と次の担当者の間は空白行を入れるとかのルールはありますか?
(γ) 2016/02/14(日) 20:30
簡単な動きのテストのみで結果の検証はしていません。 また、当方の理解が、完全に間違っているという可能性も大です。
4階層のDictionary,ちょっとやりすぎかなぁとも思いますが、アルゴリズムを組み立てるのが面倒なので バカチョンツールとして使いました。
店舗別ファイルは、マクロブックと同じフォルダに "店舗_1.xlsx" といった名前で保存。 同名のものがあれば無条件上書きをしています。
Sub Test() Const PMAX As Long = 10 Const CMAX As Long = 5 Dim shD As Worksheet Dim dic As Object Dim lines As Variant Dim pos As Variant Dim c As Range Dim sid As Variant Dim pid As Variant Dim cid As Variant Dim shT As Worksheet
Application.ScreenUpdating = False
Set dic = CreateObject("Scripting.Dictionary")
Set shD = Workbooks("データファイル.xlsx").Sheets("Sheet1") '★ブック名、シート名は実際のものに '担当者別行数枠 ' 1 2 3 4 5 6 7 8 9 10 lines = Array("", 10, 9, 17, 20, 10, 10, 4, 2, 3, 2) '担当者行番号 ' 1 2 3 4 5 6 7 8 9 10 pos = Array("", 81, 72, 55, 35, 25, 15, 11, 9, 6, 4)
For Each c In shD.Range("A2", shD.Range("A" & Rows.Count).End(xlUp)) sid = c.Value pid = c.EntireRow.Range("B1").Value cid = c.EntireRow.Range("C1").Value If pid >= 1 And pid <= PMAX And cid >= 1 And cid <= CMAX Then '念のため If Not dic.exists(sid) Then Set dic(sid) = CreateObject("Scripting.Dictionary") If Not dic(sid).exists(pid) Then Set dic(sid)(pid) = CreateObject("Scripting.Dictionary") If Not dic(sid)(pid).exists(cid) Then Set dic(sid)(pid)(cid) = CreateObject("Scripting.Dictionary") If dic(c.Value)(pid)(cid).Count <= lines(pid) Then dic(sid)(pid)(cid)(dic(sid)(pid)(cid).Count) = c.EntireRow.Range("D1:L1").Value End If Next
For Each sid In dic ThisWorkbook.Sheets("表").Copy '★テンプレートシート Set shT = ActiveSheet For Each pid In dic(sid) For Each cid In dic(sid)(pid) With shT.Cells(pos(pid), "E").Offset(, (cid - 1) * 9) .Resize(dic(sid)(pid)(cid).Count, 9).Value = WorksheetFunction.Transpose(WorksheetFunction.Transpose(dic(sid)(pid)(cid).Items)) End With Next Next
Application.DisplayAlerts = False shT.Parent.SaveAs ThisWorkbook.Path & "\店舗_" & sid & ".xlsx" Application.DisplayAlerts = True
shT.Parent.Close
Next
Application.ScreenUpdating = True
MsgBox "処理完了"
End Sub
(β) 2016/02/14(日) 20:42
とすると、テンプレートのD列にある担当者の番号は、意味がないということですね?
はい。抽出条件には関係ありません。
表を見やすくするための番号です。
また、担当者と次の担当者の間は空白行を入れるとかのルールはありますか?
いいえ。ないです。
対象範囲内で収めるように貼り付けたいので、
空白行は必要ないです。
(焦思) 2016/02/14(日) 20:44
(焦思) 2016/02/14(日) 21:03
ご教示頂きましたVBAコードを実行しましたところ、
理想通りの結果で7店舗分のファイルを作成することが出来ました。
限られた時間の中、ご教示頂きまして有難うございます。
大変感謝いたします。
貴重なお時間を頂戴しまして有難うございました。
(焦思) 2016/02/14(日) 21:06
色々ご指摘下さり有難うございます。
今後質問させて頂く際に参考にさせて頂きます。
貴重なお時間を頂戴しまして有難うございました。
(焦思) 2016/02/14(日) 21:09
βさん、ありがとうございました。
(γ) 2016/02/14(日) 21:32
何度も申し訳ございません。
大変おこがましく申し訳ございませんが、
あと一工程の作業が必要でしたのでご教示頂けないでしょうか。
先程ご教示頂きましたVBAコードにの中にコードを加えて頂くとさらにご迷惑をお掛けすると思いますので、
新たにご教示頂けますと大変有難いです。
先程、ご教示頂いた店舗別のファイルに担当者のIDと上司名を値貼付したいと思っております。
データは、以下となります。
以前提示したレイアウトの違いは、
D列 商品ID → 社員番号(ID)
E列 商品名 → 氏名
|[A] |[B] |[C] |[D] |[E] |[F] |[G] |[H] |[I] |[J] |[K] |[L] [1]|店舗|担当者|商品名|ID |氏名 |詳細1|詳細2|詳細3|詳細4|詳細5|詳細6|詳細7 [2]| 1| 10| 1|123456|山田 一郎 |○ |× |△ |○ |□ |↑ | 2 [3]| 2| 8| 2|234567|鈴木 次郎 |○ |× |△ |○ |□ |↑ | [4]| 3| 6| 3|567890|井上 三朗 |○ |× |△ |○ |□ |↑ |
B列を抽出条件とし、
D列とE列がコピーの対象です。
レイアウトは以下となります。(以前提示致しましたレイアウトの抜粋です。)
貼付先は、
担当者と同じ行に貼り付けます。
なお、担当者と同じ人数ではありません。
抽出条件が合えば範囲内の箇所に貼り付けます。
|[A] |[B] |[C]|[D] |[E] |[F] |[G] |[H] |[I] |[J] |[K] |[L] |[M] [1] | | | |<一覧>| | | | | | | | | [2] |ID |名前 | |商品名 | | 1| | | | | | | [3] | | | |担当者 |ID |商品名 |詳細1|詳細2|詳細3|詳細4|詳細5|詳細6|詳細7 [4] |123456|山田 一郎| | 10|123456|商品名A|○ |× |△ |□ |× |↑ | 10 [5] | | | | | | | | | | | | | [6] | | | | 9| | | | | | | | | [7] | | | | | | | | | | | | | [8] | | | | | | | | | | | | | [9] |234567|鈴木 次郎| | 8|234567|商品名B|○ |× |△ |□ |× | | [10]| | | | | | | | | | | | | [11]| | | | 7| | | | | | | | | [12]| | | | | | | | | | | | | [13]| | | | | | | | | | | | | [14]| | | | | | | | | | | | | [15]|567890|井上 三朗| | 6|567890|商品名C|○ |× |△ |□ |× | |
なお、ファイルはデスクトップで開き、上書き保存をします。
大変ご迷惑をお掛けいたしますがよろしくお願い致します。
(焦思) 2016/02/14(日) 23:54
c.EntireRow.Range("D1:L1").Value
のところを修正すれば良いと思うが、
商品名A,B・・・・などの情報はデータファイルのどこにあるのか不明。
要件の提示まちがいですか?
# 深夜にコード作成依頼をするのはどうなんでしょう。
(γ) 2016/02/15(月) 07:08
新しい要件、まだよく読んでいませんが、ある意味、アップ済みの処理とは全く別の処理なんですよね。 でも、γさんからも指摘いただいていますが、マクロから見れば、そこが担当者IDであろうが商品IDであろうが E列のデータはE列のデータです。
データファイルの内容を変更して、必要ならテンプレートも変更して、アップ済みのコードのまま時効するとどうなりますか? もしかしたら、希望通りのものができるのでは?
アップ済みコードは、A列、B列には、何もセットしていませんので、追加が必要なら、そこだけだと思うのですが?
一度、実行して、希望通りにならないということなら、その部分を指摘願えませんか?
それと、
>>ファイルはデスクトップで開き、上書き保存をします
アップ済みコードは、マクロブックと同じフォルダにしていますが、それをデスクトップに変更すればいいだけなんですが? つまり
shT.Parent.SaveAs ThisWorkbook.Path & "\店舗_" & sid & ".xlsx"
この ThisWorkbook.Path を CreateObject("WScript.Shell").SpecialFolders("DeskTop") に変更すればいいのですよ。
(β) 2016/02/15(月) 11:38
↑ よく読むと、かって存在していた商品IDや商品名が 担当者IDや担当者名にかわっているんですね。 でも、それなら、γさん指摘通り、商品IDや商品名は、どこから持ってきたらいいんですか?
★おちついて、少し整理されたほうがいいように思います。 また、アップ済みコードも、できるだけ、自分で調べながら理解すれば、自分で対応できるところもでてくるかもしれませんよ。
(β) 2016/02/15(月) 11:44
ご連絡が大変遅くなりまして申し訳ございません。
お二人に無理難題ばかり申し上げまして大変申し訳ございませんでした。
心からお詫び申し上げます。
ご教示頂きましたことを踏まえ、
コードを変更しましたところ、
無事に指定の場所に貼り付けることが出来ました。
アップ頂きましたコードをみて勉強いたします。
有難うございました。
(焦思) 2016/02/15(月) 20:37
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.