ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel VBA 製作所コミュの困難 Excelデータの編集

  • mixiチェック
  • このエントリーをはてなブックマークに追加
A B C D E F…
1
2
3
4
5
6
:
Aに住所データ
BCに内容
Dに住所データ
EFにBCと異なる内容
つまり
A〜CとD〜Fは全く異なるデータです。
同じ町のとある2つのデータ。(という設定で…)
同じシートに二つ並べてみました。
当然A列とD列の中には同一住所が含まれているものがあります。
A列D列と異なる列にありますが、住所が一致したものは、同じ行に並び替えをしたいのです。

良い方法はございませんか?

コメント(12)

まずはヒント
G行以降を使ってよいのならば、

A行のそれぞれの内容について
D行のそれぞれで比較してマッチした場合、GHIJKの新しい位置に
関係するデータを貼り付けるだけですね。

比較が完了する前に、コピー元のデータを削除してしまうと、
後でおかしくなるかもしれないので
どこかに、マッチした行の番号をメモしておいて
処理の最後に、おしりから消していけばよいかと・・・。

抽象的すぎたかしらん。
今は外なので、詳しくは書けませんが
AからC、DからFをそれぞれソート
AとDを上の行からマッチングして他の範囲に書き出す

という方法で可能だと思います。
> 与太郎さん

ありがとうございます

マッチングの機能が分かりません。

どのように操作すると良いのでしょうか?
3 メモリーさん
昨日VBAという言葉を知った人が、20分ぐらいでマッチングが判るのでしょうか?
VBAやマッチングって、バカチョンで出来るものじゃないですよ。

マルチポスト先に"VBAという言葉を昨日知りました"とあり、呆れました。
それにあちらでは説明不足と指摘され追加説明しているのに、こっちはそのままだし。

http://mixi.jp/view_bbs.pl?id=49981333&comm_id=2106
http://mixi.jp/view_bbs.pl?id=49984366&comment_count=10&comm_id=2106
 
>4 fenwickさん

 私も3のポストを見てから、VBAを知らないんだろうなとは感じていました。
エクセル活用コミュの方で対応進んでるようなので、とりあえず放置することに
しますw

 マルチポストについては、私は比較的穏健に済ませてあげたいというか、
エクセル活用コミュのよっちゃんさんのガイドラインに賛成です。

 スルーするか、優しく諭す。

 マルチポストであっても、質問したすべての場所をちゃんと見ていて、きちんと
返答やお礼が出来る人ならば、かまわないと思います。そうでなければシングルポスト
であってもスルーするだけです。 ま、私のもたくさんある考え方の一つですが・・・。

5 とりとん♪さん

私も貴方と同じ考えではいるんですが、許せるレベルが貴方より低いんだと思います。
これでも下書きよりも緩めに書いているつもりですので、お許しを。
 
ABC DEF
AとDで紐付けろということね。
データの量でも変わってくると思うけど
一発でやるとしたら・・・途中の行に空白がないならSQLかな。
後はデータの量が多いならシートを配列に入れてから検索だと全然早い。
出力するときも一回の書き込みで済むし。

紐付け方法なんだけれど
sumproductでもできるし
matchでもできるし
if文でもできるし
ソートはやめた方がいいけど。

ただ、例えば
A   B   C   D   E   F
埼玉 あ   あ  埼玉  あ   あ
茨城 あ   あ  埼玉  あ   あ
東京 あ   あ  茨城  あ   あ
千葉 あ   あ  茨城  あ   あ

こーゆーときどうするの?
これによって答えが全く変わってくる
8 _________さんに苦言です。

 このトピはほとんど時差はないですが、ほかのトピではもう2〜3ヶ月経過して
進行の止まったものに対して大量にレスつけられております。ご苦労はわかりますが、
どのトピが進行中でどのトピがそうでないのか判別しずらく、大変困惑しています。

 もう一点、ハンドルネームはなんとかなりませんか?
そうですか。

もう一点、あなたのハンドルネームはなんとかなりませんか?
ForとIfだけ使えればなんとかできる

For iD = 1 To Range("D65536").End(xlup).row 'D列の1行目から最終行までFor
 For iA = 1 To Rnage("A65536").End(xlup).row 'A列の1行目から最終行までFor
  'iD行でD列の文字列とA列の文字列が = だったら
  If Cells(iD,4) = Cells(iA,1) Then
   '他の範囲に書き出す処理 好きなように書き換えて
   Cells(iD, Range("IV" & iD).End(xlToLeft).Column + 1 = Cells(iA,2)
   Cells(iD, Range("IV" & iD).End(xlToLeft).Column + 1 = Cells(iA,3)
  End If
 Next iA
Next iD

うごかなかったらごめんなw

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel VBA 製作所 更新情報

Excel VBA 製作所のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。