- ベストアンサー
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 ヤマシナ よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
一応、No.4補足に対するレスです。 私の案の場合、手作業でやってみられましたか? 内容を理解した上で、ご自分でメンテナンスできるようになられたほうが良いですよ。 対象がC:D列からA:B列に変わり、条件が『一致しないもの』になるわけですから、IV2の数式を =COUNTIF(C:C,A2)=0 [フィルタオプションの設定]を リスト範囲 [A:B ] に変えれば良いです。
その他の回答 (6)
- n-jun
- ベストアンサー率33% (959/2873)
>AB:10個 CD:1756個 でcheckしました。 >AB列に楽天は1個です。 >詳細:抽出データは2個でした。正解は、10個です。 B列の社名(10個)がD列の1756個の中にあって、 10個抽出されるはずが、2個しか出ないと言う事ですか? >1つ:楽天は毎回抽出されます。 >もう一つ:ころころ変わります。 この2点も、こちらで再現できないので、よくわかりません。 すいません。
お礼
no.7 pauNedさん回答で、希望通りできました。 ご協力 ありがとう御座いました。
補足
>10個抽出されるはずが、2個しか出ないと言う事ですか? はい
- n-jun
- ベストアンサー率33% (959/2873)
>マクロ実行毎に、抽出データが違っていました。 >楽天は毎回抽出されました。 A・B列に楽天が複数あったと言う事ですね。 その場合、私ならDictionaryを使ったりもしますが、 pauNedさんの方法がシンプルでいいのかもです。
補足
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)
こんにちは、横から失礼します。 提示された情報で、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
お礼
要求通りの結果が得られました。 毎回同じデータが抽出されました。 ありがとう御座いました。
補足
N0.5 補足内容に書きましたが、もう一つお願いします。 ダブりますので、ここでは省略します。
- n-jun
- ベストアンサー率33% (959/2873)
>結果はNGでした。 エラーが出たと言う事ですか? それとも抽出されないと言う事でしょうか? 提示されている例題では抽出できましたが、当方2002ですので 或いはバージョンによるかも知れませんね。
補足
ありがとう御座います。 マクロ実行毎に、抽出データが違っていました。 楽天は毎回抽出されました。
- n-jun
- ベストアンサー率33% (959/2873)
コードと社名は必ず一致していると仮定して、 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 こうゆう感じの事ですか?
補足
ありがとう御座います。AB:10個 CD:1756個 でcheckしました。 データが多すぎて、ここでは書けないです。 結果はNGでした。
- n-jun
- ベストアンサー率33% (959/2873)
>その結果を、EFに記述するマクロを教えてください。 その結果とは何でしょう? 重複しているって事でしょうか?
補足
重複している楽天と新日鉄を、EFに記述するマクロです。
お礼
希望通りできました。ありがとう御座いました。