
何をどうすればよいのか解らず。。お力を貸していただきたいです。
マスターのリストがあり、全部で36000行くらいあります。
カラムはA列~I列まであり、A~F列まではすでにデータが入っています。
各項目は
A列 B列 C列 D列 E列 F列 G列 H列 I列
フラグ1 フラグ2 フラグ3 No 商品 担当 結果 個数 注意事項
F列の担当者は全部で10名程度います。
担当者10名に36000行全てのデータが入ったリストを配布し、
自分の担当分の行を確認し内容に応じてG~I列を入力していきます。
(内容によっては何も入力しない場合もあります)
最終的に担当者ごとにブックが出来上がるのですが
配布前のリストの同じNoの行にG列~I列を上書きしてそれぞれの担当分の結果をマージして保存したいです。
VBAを作成するときに常に同じような内容を検索し、参考にさせていただき編集していたのですが
今回同じような内容のものが見当たらず、どのように記載すればよいのか解らず困ってしまいました。
添付は配布元のリストです。
どなたかお力添えいただけると嬉しいです。よろしくお願いいたします。

No.4ベストアンサー
- 回答日時:
なるほどですね。
謝る必要はありません。
少なくとも私に対しては、(承知で回答しています)
設計や要件がしっかり出来ていてVBAの書き方が分らない。と、ご質問される方がいらっしゃいますが、よくここは、作成依頼する所ではありませんと言われているのを見ます。
私も同感です。解っていれば、検索や自身である程度出来ると思うからです。
仕様が纏らずどうすれば良いか、~のようなことは出来るのかと言うのは、全体のロジックが纏っていないので当然で、うまく説明できないと思っています。本題から離れてしまいました。。すみません。
担当者は、電話対応などで担当者名(又は要件)でフィルタを掛け対応するのですね。
>G列に値が入っている場合はそのセルの行全体をコピー元ファイルの同じ
NOのところに貼付け・・
これがシンプルで良さそうです。
ただ、36000行が引っ掛かります。
担当者変更データを配列に入れるのが良いのか、作業用シートを1枚作っておき担当者変更データ行範囲を一旦貼り付け、処理を進めるのが良いのか、、ですね。もちろん他にも良い方法があるかも知れません。
その他もまれに変更する場合があるとの事なので行範囲コピペですかね。
書式を含まないなら、代入式でも良いかもですが。
後から、フォルダ内すべてを対象に変更できるので、
まず、1つのファイルに対して処理をするのはどうでしょう。
参考になるか分かりませんが、実行コードをサンプルします。
条件は、マクロ実行ブックに作業用シートを追加してください。
処理は、開くファイルをダイアログで選びます。
そのシートにG列に値がある範囲をフィルタで
可視セルをコピーして、作業用シートに貼り付けます。
Sub Sample()
Dim TgtFilePath As String
Dim TgtBk As Workbook
Dim MyBk As Workbook
Dim wokSh As Worksheet
Set MyBk = ActiveWorkbook
Set wokSh = MyBk.Sheets("作業用")
wokSh.Activate
TgtFilePath = Application.GetOpenFilename("Excelファイル(*.xlsx),*xlsx")
If TgtFilePath = "False" Then Exit Sub
Application.ScreenUpdating = False
wokSh.Cells.ClearContents
With Workbooks.Open(TgtFilePath)
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False
.Range("A1").AutoFilter Field:=7, Criteria1:="<>"
.Range("A1").CurrentRegion.Copy wokSh.Range("A1")
.AutoFilterMode = False
End With
.Close SaveChanges:=False
End With
Application.ScreenUpdating = True
'マスタファイルでの転記処理
End Sub
ありがとうございます。お礼がとても遅くなってしまいました。
丁寧に記載していただいたので、これを元に自分なりに色々工夫してみまし。
記載していただいた内容を自分で解読するのにこんなに時間がかかってしまうとは・・・・
とっても助かりました!!
ここは、ほんとに皆様親切でいつもいつも助けられています。
勉強不足の私にもとても優しく丁寧に教えてくださって本当にありがとうございました。
No.6
- 回答日時:
>F列担当者部分は最初空欄で後から記入したりする場合があるため固定では無い想定です。
ということですが、
No1(2行目)は、田中さんの割り当てですが、
田中さんのファイルの処理を行うとき(マクロを実行したとき)、(各担当者からファイルが送られてきて、マスターにまとめるマクロを実行したとき)
1)田中さんのファイルの2行目のF列は空白なのですか、それとも、田中と記入記入されているのでしょうか。
2)同様にマスターの2行目のF列は空白なのですか、それとも、田中と記入記入されているのでしょうか。
No.5
- 回答日時:
例えば、こんなやり方はいかがでしょうか?
担当Aさんのシートの全セルを選択し、コピーして、マスターシートにペーストします。ペーストする際、貼り付けのオプションで「空白を無視する」をチェックします。
これを担当Bさん以降、順次、同じ要領でペーストしていけば、ご希望のマージ結果になると思います。
マクロ化しなくてもマニュアル作業で十分、対応できる範囲だと思います。
No.3
- 回答日時:
補足ありがとうございます。
#1の手順では問題が出てしまいますね。コピペの範囲も変わってしまうので、一意のキーワードがあれば、それを関数で探し代入とかになるのかなぁ? D列&E列F列みたいな、、、36000行、10ファイル、、スタックの可能性も出て来るかも。。
まだ、設計段階なのでしょうか、管理番号のような列を加えた方が良いかもしれませんね。(名前と管理番号、空白でない等で処理していく場合)
処理的にマスターを名前でソートするなどすれば、範囲が特定出来て処理速度が上がると思います。
担当者に渡すリスト表は、36000行(他の担当が)あるリストを渡すとは考えにくいのでは、また、担当者リストのフォーマットや繰り返し未入力リスト(未入力部分のみ)を担当者に渡し、マスターに追加するような追加処理があるのか、など決めていく必要がありそうですね。。
各担当に渡す表を出力するVBAを先に作った方が良さそう。。
よく考えず、ざっくり#1を回答してしまいましたが、まだ要件定義が必要な感じがします。後から変更や追加となるとVBAの改修も大変になるかなと思います。
早々のご回答ありがとうございます。
>まだ要件定義が必要な感じがします。
おっしゃる通りです。
36000行全てを配布したいのは、業者から電話がかかってきた際に10名誰が電話に出ても入力対応ができるように他の担当者分のリストを全て配っておきたいという意図があります。
また、共有ファイルサーバが無いためメールで配布、メールで回収ということで皆が一斉に入力できるような環境が有りません。36000配っておくのが無難だろうという判断に至りました。
D列のNoを管理番号として割り振ってみました!
G列に値が入っている場合はそのセルの行全体をコピー
元ファイルの同じNOのところに貼付け
というのが理想でしたが、それで良いのか
また、何から検索すればよいのか・・・・と
親身に相談に乗っていただき、回答まで頂いているのに私の語彙力と説明力がなさすぎるため申し訳有りません。
No.1
- 回答日時:
こんばんは、
方法は色々あると思いますが、ロジックでいくつか解らない点があります
10名程度のファイルを一度に処理するのでしょうか?1ファイルずつ行うのでしょうか。それで取得方法が変わります。また、同じフォルダに集める場合は同じファイル名が使えません。。少し脱線しました。
本題
渡したマスターのリストの表組は、変わらないと言う事でしょうか、
差分で検証する事は出来ますが、、ここは、重要。
絶対に変わらないのであれば、だれが入力した物でも変わらないので、元マスター表のF列担当者に担当者名でフィルタを掛け、担当ファイルの同様箇所に担当者名でフィルタを掛け、可視セルに対してコピペ、10名(ファイル)程度繰り返す。こんな感じで出来そうですが、、
フィルタ、可視セルコピーなどで探せばすぐに参考コードが見つかると思います。
表組が崩れるとなると一意のワードを見つけるか作る必要があり、36000行なら、少々大変ですね。
確かにフィルタでできそうですね!!とても参考になりました!
ただ、元データ側で36000件F列に全て担当者名が入っているわけではなく、後から入力される場合があります。まれに変更も想定しております。
Noをキーにしたかったのですが、、、検索ワードも思いつかず。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
ある列のセルに特定の文字が入っていたら他のセルに決まった文字を入れる
Word(ワード)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
4
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
-
5
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
6
VBAで「セルに何か入っている場合」
Windows Me・NT・2000
-
7
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
8
EXCEL あるセルに数字が入力されれば既存マクロ実行させたい
Excel(エクセル)
-
9
VBAでセルに値が入ったときにイベントを起こしたい
Visual Basic(VBA)
-
10
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
11
エクセルVBAで、ある文字を含んでいたら別シートに抽出したい
Excel(エクセル)
-
12
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
13
VBA 条件が一致した場合のみコピーする
その他(ビジネス・キャリア)
-
14
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
15
エクセルVBAで特定の文字列が見つかったらIF文以下を実行するには?
Excel(エクセル)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
エクセルVBAのIFを使ったコピペ
Excel(エクセル)
-
18
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
19
特定の文字列があったらその行をまるごと別シートに反映させたい
Excel(エクセル)
-
20
エクセルで条件に一致したセルの隣のセルを取得したい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセル 同じ値を探して隣の...
-
5
エクセル(勝手に太字になる)
-
6
Excelで2つの条件のうちどちら...
-
7
Excel、市から登録している住所...
-
8
エクセルで最初のスペースまで...
-
9
VBAで文字列を数値に変換したい
-
10
エクセルの項目軸を左寄せにしたい
-
11
エクセルで文字が混じった数字...
-
12
エクセルで、列の空欄に隣の列...
-
13
エクセルの関数(日数の平均の...
-
14
Word2016でExcelデータを差込し...
-
15
文字を入力したら数値が自動入...
-
16
エクセルの隣り合う列のグループ化
-
17
EXCELで 一桁の数値を二桁に
-
18
ExcelのIF関数によるフラグ立て...
-
19
VBA 連続行データを5行ずつ隣の...
-
20
文字列に数字を含むセルを調べたい
おすすめ情報
公式facebook
公式twitter
ご確認いただきありがとうございます。
10名のファイルを1つのフォルダに集めて一度に処理する予定です。
ファイル名は名前_mmddにする予定なので問題ないかと思います。
本題部分ですが
表組みの変更ななく固定ですが
F列担当者部分は最初空欄で後から記入したりする場合があるため固定では無い想定です。
肝心な情報が抜けており申し訳有りません。