• ベストアンサー

抽出の方法

excelで表が作ってあって、 担当者名、支店コード、部コード、課コード があります。 で、支店コードが00で、なおかつ部コードが11の人で 課コードの11,12,13、20以外の人を抽出したいのですが、思いつく方法は まず、支店コードと部コードの人をオートフィルタで抽出し、そのデータをコピーし、違うシートに貼り付け、目で課コードの11,12,13,20の人を見つけて削除してるのですが もっと、簡単に抽出できませんか?? よろしくお願いします。

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

  • ベストアンサー
  • mythism
  • ベストアンサー率52% (45/86)
回答No.2

担当者名,支店コード,部コード,課コードがそれぞれA,B,C,D列にあり,2行目からデータが始まっていると仮定すると,2行目の最後に =IF(AND(B2=0,C2=11),IF(AND(OR(D2<11,13<D2),D2<>20),1,0),0) という関数を入れると抽出対象者は1,抽出対象外の人は0が出力されます. その結果をオートフィルターで抽出しても良いですし,関数を入力した列を使って並べ替えてから削除(順番が復元できない場合には,先に並べ替えて順番を戻せるように通し番号をつけておく)するという方法でもできます.

lionmayumi
質問者

お礼

""つけてできました。 ありがとうございます。 ただ、関数をいれるのが結構大変でした。 (^^ゞ

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

VBAでは下記が1例です。 J=30は余白部の行番号数を指定。 Case文のこの書き方の方が、関数式より判りやすいと思うのですがどうでしょう。 For i = 1 To 20の20は最下行行番号数です。 case case や case else end select はその行間に何も書いてないので、何もしない、即ち処理をしないことを表現できます。 Sub test02() j = 30 For i = 1 To 20 Select Case Cells(i, "A") Case "00" Select Case Cells(i, "B") Case "11" Select Case Cells(i, "C") Case "11" Case "12" Case "13" Case "20" Case Else Cells(j, "A") = Cells(i, "A") Cells(j, "B") = Cells(i, "B") Cells(j, "C") = Cells(i, "C") Cells(j, "D") = Cells(i, "D") j = j + 1 End Select Case Else End Select Case Else End Select Next i End Sub

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.4

#2の方の方法が簡単だと思います。 ただ、#1の方への補足を見ますと文字列だとのことですので、それを考慮に入れて補足させていただきます。 E2セルに次の式を入力します。 =IF(AND(B2="00",C2="11",NOT(ISBLANK(D2)),SEARCH(D2,"11,12,13,20")>0),"削除","") E2セルを下方に必要なだけコピーします。 オートフィルタでE列=削除を選択して行削除 どうでしょうか。頑張ってくださいヽ(^。^)ノ ・・・と書いているうちに自己解決したようですね(>_<)

lionmayumi
質問者

補足

うーん...#VALUE!のエラーがでます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

フィルタにこだわるなら 別のシートに 支店コード、部コード、課コード 00 11 11     12     13     20 として 「データ」「フィルタ」「フィルタオプションの設定」で 抽出条件に上記の範囲を設定してください。

lionmayumi
質問者

補足

課コードは11,12,13,20以外なので <>11<>12<>13<>20としても 抽出されないのです。すいません。ありがとうございます。

  • adol37
  • ベストアンサー率36% (26/72)
回答No.1

課コードにどんな要素があるかわかりませんが、オートフィルタの中のオプションを選択して最初の条件に「1?」で「始まらない」、並列条件をorにして2つ目の条件に「20」で始まらないとすればいいんじゃないでしょうか?

lionmayumi
質問者

お礼

このコードは関数を利用して抽出したので文字列になっています。そのせいかどうかわかりませんが??? 課コードがうまく抽出されず、20で始まる人が入っていたり、12の人が入ってしまったりしてしまいます。

関連するQ&A

専門家に質問してみよう