dポイントプレゼントキャンペーン実施中!

こんにちは、エクセル2010を使っています。

前回の質問でクライテリアの方法を教えてもらったのですが、その応用方法を教えて頂けませんか?

.Formula = "=IF(OR(ISNUMBER(FIND({""殺菌済"",""済み"",""終了"",""完了"",""すみ""},M2))),1,"""")"

のコードで、キーワードを一部一致でも含むものを限定することが出来ました。
それで今回の質問は、反対に上記の文字を文字の一部にさえ含まないものを限定したいのです。

====================
Dim lastRow As Long
Application.ScreenUpdating = False
With Worksheets("Sheet1")
.Rows(1).Insert
.Range("L1") = "ダミー"
lastRow = .Cells(Rows.Count, "M").End(xlUp).Row

' 改変したい行はここ ★★★
.Formula = "=IF(OR(ISNUMBER(FIND({""殺菌済"",""済み"",""終了"",""完了"",""すみ""},M2))),1,"""")"

If .Cells(Rows.Count, "L").End(xlUp).Row > 1 Then '←念のため
Range(.Cells(2, "A"), .Cells(lastRow, "EO")).SpecialCells(xlCellTypeVisible).Copy Worksheets("Sheet2").Range("A1")
End If
.AutoFilterMode = False
.Rows(1).Delete
End With
Application.ScreenUpdating = True
MsgBox "処理完了"
====================

前回の質問は、キーワードを含むものを抽出でしたが、今回は上記のキーワードを含まないものを抽出する。

完全に一致のものはもちろん 一部一致の物も除外し、転記したいと思います。

詳しい方、教えて頂けませんか?
よろしくお願いいたします。

A 回答 (4件)

No.2です。


たびたびごめんなさい。

自分で書いたコードなのですが、もう昨日のことを忘れていました。
A列は「1」か空白セルのどちらかになるはずですので、

>.Rows(1).AutoFilter field:=1, Criteria1:=""
で大丈夫です。

どうも失礼しました。m(_ _)m
    • good
    • 0
この回答へのお礼

再度の回答を頂きまして、ありがとうございます。

なるほどです、A列に判定用の文字をナンバリングして、それをフィルタに掛けていたのですね、やっと理解できてきました。

教えて頂きありがとうございました、助かりました。

お礼日時:2015/05/17 19:52

NO1です。

Tom04さん途中からすみません。
だいぶお困りの様なので

gekikaraouさん
Sheet1のデータの1行目に項目名(フィールド名)がないのですよね。
とりあえず、1行目に挿入
1 2 3・・・13 と番号でも入れてみてください。
別途、抽出したいシートを準備します
     A  B  C D・・・・・P
1行目  1     1 2 3・・・13
2行目  済
3行目 完了
4行目 終了
5行目 すみ
と抽出したい条件を記入しておく A列

表示したい列 C~P列にそれぞれの項目名(フィールド名)と条件を記入して準備しておきます。
このシートをアクティヴ(選択)にした状態で
Sub Macro20()
Sheets("Sheet1").Columns("A:M").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A5"), CopyToRange:=Range("C1:O1"), Unique:=False
End Sub
を実行してみてください。
とりあえず、指定した文字を含むは抽出できると思います。
含まない場合は、少しシートを変える必要があります。
しばらくはお付き合いできると思います。
(都構想の速報がはじまるったら?です)
    • good
    • 0
この回答へのお礼

こんばんは、回答ありがとうございます。

指定した文字を含む の物は前回解決致しました、ありがとうございます。

今回は、文字列を含まないだったのですが、前回のコードを1行変更する事で解消しました。

一緒に考えて頂き、ありがとうございました。

お陰様で私も今から時間が出来ました、ありがとうございます。

お礼日時:2015/05/17 20:55

こんにちは!



https://oshiete.goo.ne.jp/qa/8983345.html
のサイト関連ですね。

難しく考える必要はないと思います。
前回のコードではA列(作業列)にL列データで条件が「含まれる」行に「1」が表示され、
A列の「1」でフィルタを掛けています。
今度は「1以外」でフィルタを掛ければ大丈夫のはずです。

>.Rows(1).AutoFilter field:=1, Criteria1:=1
の行を
> .Rows(1).AutoFilter field:=1, Criteria1:="<>1"
にしてみてください。

他のコードは全くそのままでOKです。m(_ _)m
    • good
    • 0

.Formula = "=IF(OR(ISNUMBER(FIND({""殺菌済"",""済み"",""終了"",""完了"",""すみ""},M2))),1,"""")"


の反対ですよね
.Formula = "=IF(OR(ISNUMBER(FIND({""殺菌済"",""済み"",""終了"",""完了"",""すみ""},M2))),"""",2)"
とIF文の最後を入れ替えてはダメ?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

実行してみましたが、該当文の所でエラーが出てしまいますね。

エラー 438
オブジェクトは このプロパティまたはメソッドをサポートしていません

となってしまいます。

お礼日時:2015/05/17 18:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!