プロが教える店舗&オフィスのセキュリティ対策術

説明しにくいのですが以下のようなデータが別ブックにあります。
Book1 
A列    B列   C列    D列
商品名  数量   コード   着日
A     1    ABC    
A     3    DEF
B     1    CBA
------------------------------------------------
Book2
A列    B列   C列    D列
商品名  数量   コード   着日
A     1    ABC    1/1
A     1    CCC    2/8
-----------------------------------------------

Book1 とBook2のデータをBook3の表へ以下のようにまとめ、Book2の着日はD列に転記されるようにしたいです。
商品名、コードが同一のものは1行にまとめる、着日はBook2から転記する


A列    B列   C列    D列   E列  F列   G列  
商品名  数量   コード   期限   数量  コード  着日 
A     1    ABC    1/1    1  ABC  1/1
A     3    DEF
A                     1   CCC  2/8
B     1    CBA
----------------------------------------------------------------------
実際の商品は100品種程あるので手作業で行うと時間がかかり転記ミスも生じてしまいます。
マクロ以外で簡単に作業できる方法があれば教えてください。
マクロの知識がないので修正が必要になった時に対応ができないです。。
宜しくお願いします。

A 回答 (2件)

> マクロ以外で簡単に作業できる方法があれば


あなたのいう「簡単」て何ですか? 勉強しないでもコピーして貼り付
けたら 全く理解してなくても動くという意味ですか?

だとしたら別にマクロでいいでしょうに。

> マクロの知識がないので修正が必要になった時に対応ができないです。。
マクロではなく一般機能だったら 自分で修正できるんですね?
後から絶対に文句いわないで下さいね。

外部データの取り込み機能で処理します。一般機能で処理できる方法の中
では一番 簡単でしょうから。こんなもの数式でやるのは論外です。

Sheet1・Sheet2に置き換えてますが フルパスを書けば外部ブックで
も参照できます。

SELECT ab.商品名, ab.数量, ab.コード, ab.期限, c.数量, c.コード, c.着日
FROM
(SELECT aa.コード As 統合コード, aa.商品名, b.数量, b.コード, b.期限
FROM
(SELECT 商品名, コード
FROM
(SELECT 商品名, コード
FROM [Sheet1$A:C]
UNION ALL
SELECT 商品名, コード
FROM [Sheet2$A:C]) As a
GROUP BY 商品名, コード) As aa
LEFT JOIN
(SELECT 商品名, コード, 数量, 期限
FROM [Sheet1$A:D]) As b
ON aa.コード = b.コード) As ab
LEFT JOIN
(SELECT 商品名, コード, 数量, 着日
FROM [Sheet2$A:D]) As c
ON ab.統合コード = c.コード

素直に基礎から VBAの勉強をした方がいいと思いますね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
説明不足で語弊を招いたようで気分を害してすいません。
質問の作業を実際行うのはエクセルの知識がない方になるので、(私も初心者ですが)簡単にと記載してしまいました。マクロを組むとメンテナンスが必要になった時に難しいと聞いた事がありまして。関数で対応できるかと試行錯誤しましたが上手く行かず、、
book3は部外に提出するので関数を使用して体裁上値貼付して使用希望です。
宜しくお願いします。

お礼日時:2018/02/15 18:40

ちゃんと文章読んだのかな……「論外」だとわざわざ書いたのに。



> 説明不足で語弊を招いたようで気分を害してすいません。
「~だったら」とか「~ようで」とか 推測で謝る人は 実際には自分は何も
悪くないと思っているか 全く何にも分からないまま謝っている人ですね。

私は別に気分は悪くありませんし 説明不足とも思っていませんよ。

むしろあなたの書いたことに これ以上ないほど正確に回答したはずです。
書いた コマンド文字列も本当に使えるものですし。

> 質問の作業を実際行うのはエクセルの知識がない方になるので
使う人に知識なんていりません。作り手にさえ知識があればいい話です。
初心者がよく使う言い訳ですが 表の悪さを使い手のせいにしないで下さい。

> マクロを組むとメンテナンスが必要になった時に難しい
Excelに関数で処理するよりメンテナンス性の悪い方法なんてありません。
初心者は「関数を使って」「自動で」「反映」が大好きですが それが一番
処理の無駄を増やします。

ましてや 外部データの取り扱いを数式だけでやるなんてのは処理を複雑且
つ不安定にするだけで何の得もありません。

> 関数を使用して体裁上値貼付して使用希望です。
どうしても数式でやりたいなら別に止めませんが アドバイスする気もない
のでどうぞご自由に。やってやれないことはないとだけ書いておきます。

それを無理やりできるようになった頃には「ああ 数式でやるなんて馬鹿だ」
と分かると思います。それはそれでいい勉強になりますよ。
    • good
    • 0
この回答へのお礼

ご丁寧にご回答いただきありがとうございました。

お礼日時:2018/02/15 22:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!