• ベストアンサー

VBA データ中の出現位置マッチングについて

お世話になります。 Excel2007 VBAなのですが 列の並び順が違う2つのデータ群A、B、がある時、 Aの並びに習ってBを並べ直す場合、 1つの式のみとか、1度の計算だけとか そんな位で並び順を得ること できますか? それともやっぱ 何回か、列数の文だけ 計算が必要ですか? 何となくですが、 スパッと取得できそうなおぼろげな予感がしてます。 例えば 配列数式の解として 配列で解を得て 配列変数などに格納する… 的なことができそうな気がしているのですが 如何でしょうか? ご至難をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

並べ替えたいんじゃなくて数字が欲しいだけですね。失礼しました。 sub macro2()  dim a  dim h as range  set h = range("B1:B" & range("B65536").end(xlup).row)  a = application.match(h, range("A:A"), 0)  h.offset(0, 1) = a end sub

Nouble
質問者

お礼

ループでタク次的に1つ1つ調べずとも シート関数のようにズバッと取得できるのですね。 この言語すごいですね。 最近の言語はこんなこと 当たり前にできるものなのですか?

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

>Aの並びに習ってBを並べ直す sub macro1() ’Aの並びを調べる  application.addcustomlist range("A1:A" & range("A65536").end(xlup).row).value ’すぱっと並べ替える  range("B:B").sort key1:=range("B1"), order1:=xlascending, header:=xlno, ordercustom:=application.customlistcount + 1 ’片づける  application.deletecustomlist application.customlistcount end sub これ以上は特にフォローしませんが、そもそもご相談のヤリタイ事が説明不足です。 意図と違う結果となったなら、「どういう状況でどんな結果が欲しくて何をしたかったのか」更に詳しく説明を添えて、改めてご相談を投稿してみて下さい。

Nouble
質問者

お礼

ありがとうございます。

関連するQ&A