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












