[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『二つのブックを選んで比較』(noa)
よろしくお願いします。
「まとめる」フォルダの、
「全員」というサブフォルダ内に、
「山田」「田中」「吉村」「鈴木」…というブックがある。
作業ブック「比較する」(「まとめる」フォルダに存在)で、
サブフォルダ「全員」内のブック「山田」と「田中」を選び、
(「田中」と「鈴木」のこともあれば、「山田」と「吉村」のこともある)
その二つのブックの特定名シートを比較する。
・・・ということをやりたいと考えています。
1.フォルダを二つダイヤログボックスで選ぶ
2.シートの比較は複数セルの一致不一致を知りたいので、
countifsのようなことをvbaで
と考えているのですが、具体的にどうすればよいのか分かりません。
ご指導いただけませんか?
< 使用 Excel:unknown、使用 OS:unknown >
(noa) 2020/05/10(日) 15:01
これだけでは、イメージできないので、具体例をあげて説明してください。
比較する元データと、期待する出力結果の
レイアウト(セル番地がわかる)が必要です。
(マナ) 2020/05/10(日) 15:34
1.は、GetOpenFilenameの繰り返しでなんとかなりそうな気がしてきました。
今のところ、「一つ目は?」「二つ目は?」と二回msgBoxを出して開く形にしていますが、
どうも不細工なので、プルダウンなどにできれば目視もできていいのですが…
2.は、実はさっぱりわかりません。
ifを繰り返す形…? ぐらいしか思いつかずです。
一致不一致を見るというのは、
複数セルのセット、たとえばA1/B1/C1/D1(中身は空白のこともある)が、
もう一つのシート内にも同じセットとしてあるか、
(場所はシート内のどこにあるか不明、範囲指定は可能)
その一致不一致を見たい。ということです。
(できれば、不一致ならそこを色付けしたい)
(noa) 2020/05/10(日) 15:44
ブック1のシート1内のA1/B1/C1/D1 (A2/B2/C2/D2と続けてループさせたい)
シート2のシート1内のどこか(たとえばB:E)にあるかどうか。
(noa) 2020/05/10(日) 16:00
質問に答えたことになっていないとご指摘いただいたので(ありがとうございます)、
おっしゃるところの「具体例」になっているかどうかわかりませんが、追記してみます。
よろしくお願いします。
ブック1のシート1に下記内容が入っています。
A1 B1 C1 D1
あ い う え
A2 B2 C2 D2
か き け
A3 B3 C3 D3
さ し す せ
…
ブック2のシート1に下記内容が入っています。
B C D E
あ い お え
あ い う え
さ し す せ
か き く け
か き け
あ あ う え
…
ブック1のシート1とブック2のシート1を照合し、
ブック1の「あいうえ」セットがブック2にも存在するか確認する。
続いて「かき(空欄)け」、「さしすせ」、その次、とすべてチェック。
結果はブック1(ブック2でもよいのですが)に、
A1 B1 C1 D1
あ い う え 一致
のように表示。
…以上がやりたい形です。
Excel2016/win10
(noa) 2020/05/11(月) 14:48
1)ブック1は、比較の対象はA〜D列固定である 2)ブック2は、どの列が対象になるか決まっていない 3)フォルダ内の、どれがブック1か、操作者はわかる? 4)ブック1、ブック2とも、データは1行目からである(見出し行はない) 5)ブック1、ブック2とも、比較対象の列以外にも、無関係なデータがある
(マナ) 2020/05/11(月) 18:38
ありがとうございます。
なるほど。おっしゃっていることが理解できました。
例ではなく、そのままの形の提示が必要、ということなのですね?
見出し行など細かいところまで考えてくださってありがたいです。
申し訳ありません、実はどちらのシートも最終完成品がないのでイメージだけなのです、
が、仮に固定してみます。
それから、はじめはブック1に結果を、と書きましたが、たしかに
「どれがブック1か操作者がわかるか」という問題も出てきそうですので、
(ブック名で類推はできますが)、ブック3でこの作業ができればいいのかな、
と思い始めました。その形でお願いできますか?
1) ブック1は、比較の対象はA-D列固定
2) ブック2は、比較の対象はE-H列固定
3) ブック3にて、ブック1とブック2を呼び出して作業する
(ブック3に結果表示として、ブック1をコピペしたもの+一致不一致、を表示させる)
4) ブック1、ブック2ともいずれもデータは2行目から
5) ブック1、ブック2とも、比較対象の列以外にも無関係なデータがある
以上です。
(noa) 2020/05/11(月) 18:55
1)ブック3に、ブック1のデータをコピペ
2)E列にCOUNTIFS関数を挿入
3)E列を値に変換
(マナ) 2020/05/11(月) 19:05
そういうことではなくて
どの列と比較してよいかわからないと困るので
見出しがあれば、
それを目印にできないかとか、
フォルターオプションで一致データを抽出できないか
と考えただけです。
ブック2の列は、「まだ」決まっていない
というだけですね。
(マナ) 2020/05/11(月) 19:23
ありがとうございます。
つまり、vbaに関数を組み込む(ことができる?)ということでしょうか。
もしくは、関数だけでやったほうが簡潔という意味?
関数だけだとしたら、
1.ブック3を開き、
2.ブック1を選んでコピペ(手作業?)
3.ブック2を選んで(開いて?)countifs?(どうやって指示すれば?)
4.countifsで空欄の場合も空欄同士なら「一致」としたい。どうすれば?
と、これまた疑問がいっぱいで…
(noa) 2020/05/11(月) 20:52
できないんですね。知りませんでした。
では、ブック2のデータもブック3にコピペし
空欄には、「空欄」という文字列を入力しましょう。
で、最後に、「空欄」を置換で、空欄に戻しましょう。
>vbaに関数を組み込む(ことができる?)ということでしょうか。
できます。
まずは手作業で、どんな式にしたらよいか試してみましょう。
(マナ) 2020/05/11(月) 21:34
1.作業ブック「比較する」を開き、マクロ実行
ここから、マクロ
2.「山田」を開いて「比較する」にコピペし閉じる
3.「田中」を開いて「比較する」にコピペし閉じる
4.空欄を置換で、「空欄」にする
5.数式(COUNTIFS)を入力
6.数式を値に変換(コピーして値貼り付け)
7.「空欄」を置換で、空欄にする
8.「比較する」を名前を付けて保存
(マナ) 2020/05/11(月) 21:48
ありがとうございます。まだ解決していませんが、取り急ぎ今日のお礼とご報告を。
今のところ
1.〜 3.まではいけてます。
4.で空欄を「空欄」にするところで止まっています。
はじめは、「山田」と「田中」を同じシートに並べてコピペしてみたのですが、
空欄にする範囲指定が難しくなりそうだったので、それぞれシート分けました。
で、どうするか、usedrange? ifで見つけて置換?
ってところでトライ中です。
countfsでもつまりそうです。
WorksheetFunction.CountIfs で書いてみてもうまくいかずエラーが続いてますが、
もしかしたら$を使えないのか?それとも何かほかの理由?…などなど手探りです。
6.〜8.はいけそうです。
(noa) 2020/05/11(月) 23:28
1列あければ、Currentregionが使えます。
置換は、まずは手作業で試してください。
それを「マクロの記録」です。
>WorksheetFunction.CountIfs
違います。これも手作業で数式を入れてみてください。
で、「マクロの記録」です。
手作業でできていない段階で、マクロのことを考えなくてよいです。
(マナ) 2020/05/11(月) 23:50
無事できました。ありがとうございました。
(noa) 2020/05/13(水) 01:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.