• ベストアンサー

excel2003 マクロ

winxp he sp2,office2003 楽天 新日鉄 ABとCD両方にあります。 その結果を、EFに記述するマクロを教えてください。 AB CD データは沢山あります。 列がずれて見にくいです。 A,B列:サーチ  C,D列:基準 E,F列:結果 A   B     C   D             E   F 4755 楽天    1400 アライヴコミュニティ    4755 楽天 1885 東亜建   1503 住友石炭          5401 新日鉄 6796 クラリオン 1518 三井松島 6590 芝浦    1757 千年の杜 5218 オハラ   1783 A.Cホールディングス 6723 NECエレ 2164 地域新聞社 4973 日本高純度 2316 モスインスティテュート 6665 エルピーダ 2318 ビービーネット 4186 東応化   2330 フォーサイド・ドット・コム 5401 新日鉄   2350 オックスホールディングス          2709 タスコシステム          3011 バナーズ          3090 ナチュラム          4314 ダヴィンチ・アド          4755 楽天          4772 デジタルアドベンチャー          4835 インデックスHLDGS          5401 新日鉄          5955 ヤマシナ よろしくお願いします。

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

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.7

一応、No.4補足に対するレスです。 私の案の場合、手作業でやってみられましたか? 内容を理解した上で、ご自分でメンテナンスできるようになられたほうが良いですよ。 対象がC:D列からA:B列に変わり、条件が『一致しないもの』になるわけですから、IV2の数式を  =COUNTIF(C:C,A2)=0 [フィルタオプションの設定]を  リスト範囲  [A:B  ] に変えれば良いです。

esd827
質問者

お礼

希望通りできました。ありがとう御座いました。

その他の回答 (6)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.6

>AB:10個 CD:1756個 でcheckしました。 >AB列に楽天は1個です。 >詳細:抽出データは2個でした。正解は、10個です。 B列の社名(10個)がD列の1756個の中にあって、 10個抽出されるはずが、2個しか出ないと言う事ですか? >1つ:楽天は毎回抽出されます。 >もう一つ:ころころ変わります。 この2点も、こちらで再現できないので、よくわかりません。 すいません。

esd827
質問者

お礼

no.7 pauNedさん回答で、希望通りできました。 ご協力 ありがとう御座いました。

esd827
質問者

補足

>10個抽出されるはずが、2個しか出ないと言う事ですか? はい

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

>マクロ実行毎に、抽出データが違っていました。 >楽天は毎回抽出されました。 A・B列に楽天が複数あったと言う事ですね。 その場合、私ならDictionaryを使ったりもしますが、 pauNedさんの方法がシンプルでいいのかもです。

esd827
質問者

補足

AB列に楽天は1個です。 詳細:抽出データは2個でした。正解は、10個です。 1つ:楽天は毎回抽出されます。 もう一つ:ころころ変わります。 もうひとつお願いします。 winxp he sp2,office2003 ABからCDを除いたものをEFに記述するマクロを教えてください。 この場合、楽天 新日鉄を除いたlistとなります。 株:銘柄コードと銘柄名 一体です。コード番号で調べていいです。 AB CD データは沢山あります。 列がずれて見にくいです。 A   B      C   D     E   F 1400 アライヴコミュニティ    4755 楽天    1400 アライヴコミュニティ 1503 住友石炭          1885 東亜建   1503 住友石炭 1518 三井松島          6796 クラリオン 1518 三井松島 1757 千年の杜          6590 芝浦    1757 千年の杜 1783 A.Cホールディングス   5218 オハラ   1783 A.Cホールディングス 2164 地域新聞社         6723 NECエレ 2164 地域新聞社 2316 モスインスティテュート   4973 日本高純度 2316 モスインスティテュート 2318 ビービーネット       6665 エルピーダ 2318 ビービーネット 2330 フォーサイド・ドット・コム 4186 東応化   2330 フォーサイド・ドット・コム 2350 オックスホールディングス  5401 新日鉄   2350 オックスホールディングス 2709 タスコシステム                2709 タスコシステム 3011 バナーズ                   3011 バナーズ 3090 ナチュラム                  3090 ナチュラム 4314 ダヴィンチ・アド               4314 ダヴィンチ・アド 4755 楽天                     4772 デジタルアドベンチャー 4772 デジタルアドベンチャー            4835 インデックスHLDGS 4835 インデックスHLDGS            5955 ヤマシナ 5401 新日鉄 5955 ヤマシナ よろしくお願いします。

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.4

こんにちは、横から失礼します。 提示された情報で、n-junさんのコードは[win2000/xl2000][winXP/xl2003]で正しく動作する事を確認しました。 参考まで。 質問者さんがマクロについて詳しくない場合、 まずは一般操作だったらどうするかを考えて、 [新しいマクロの記録]を参考にするのも一つの手かと思います。 1)1行目挿入し、A1:D1に見出しをつける。 2)未使用セルを作業列として(例えばIV2)抽出条件の数式を入れる。  =COUNTIF(A:A,C2)>0 3)C:D列を選択して、メニュー[データ]-[フィルタ]-[フィルタオプションの設定]。  抽出先---   ○指定した範囲  リスト範囲  [C:D  ]  検索条件範囲 [IV1:IV2]  抽出範囲   [E1   ] 4)E:F列に抽出される。 5)作業セルIV2セルをクリアし、1行目を削除する。 (参考:43-2 フィルタオプション(文字列の検索・計算検索条件)) http://www11.plala.or.jp/koma_Excel/contents6/mame6043/mame604302.html 以上の操作をマクロ記録して整理すると下記のようになります。 Sub Macro1()   Rows(1).Insert   Range("A1:D1").Value = [{1,2,3,4}]   Range("IV2").Formula = "=COUNTIF(A:A,C2)>0"   Columns("C:D").AdvancedFilter _     Action:=xlFilterCopy, _     CriteriaRange:=Range("IV1:IV2"), _     CopyToRange:=Range("E1:F1")   Range("IV2").Clear   Rows(1).Delete End Sub

esd827
質問者

お礼

要求通りの結果が得られました。 毎回同じデータが抽出されました。 ありがとう御座いました。

esd827
質問者

補足

N0.5 補足内容に書きましたが、もう一つお願いします。 ダブりますので、ここでは省略します。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

>結果はNGでした。 エラーが出たと言う事ですか? それとも抽出されないと言う事でしょうか? 提示されている例題では抽出できましたが、当方2002ですので 或いはバージョンによるかも知れませんね。

esd827
質問者

補足

ありがとう御座います。 マクロ実行毎に、抽出データが違っていました。 楽天は毎回抽出されました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

コードと社名は必ず一致していると仮定して、 Sub try()     Dim i As Long, j As Long     Dim r As Range, vv          Set r = Range("D1", Cells(Rows.Count, 4).End(xlUp))     vv = Range("A1", Cells(Rows.Count, 2).End(xlUp)).Value     j = 1     For i = 1 To UBound(vv, 1)         With WorksheetFunction              If .CountIf(r, vv(i, 2)) > 0 Then                  Range("E" & j).Value = vv(i, 1)                  Range("F" & j).Value = vv(i, 2)                  j = j + 1              End If         End With     Next End Sub こうゆう感じの事ですか?

esd827
質問者

補足

ありがとう御座います。AB:10個 CD:1756個 でcheckしました。 データが多すぎて、ここでは書けないです。 結果はNGでした。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>その結果を、EFに記述するマクロを教えてください。 その結果とは何でしょう? 重複しているって事でしょうか?

esd827
質問者

補足

重複している楽天と新日鉄を、EFに記述するマクロです。

関連するQ&A

専門家に質問してみよう