[[20100503035901]] 『振り分けます。』(ピピロン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『振り分けます。』(ピピロン)

いつもお世話になります。
下の表から
一般に〇がある人は、シート2へ(一般に該当する人だけ)。
機械に〇がある人は、シート3へ(機械に該当する人だけ)。
また性別で男に該当する人は、シート4へ(〇の有無に関係なく)。
性別で女に該当する人は、シート5に(〇の有無に関係なく)行詰めで氏名のみを表示させたいのですが、その対処方法を教えて頂けませんでしょうか?

  __A__ __B__ __C__ __D__
1 氏 名 一 般 機 械 性 別
2 カキクケコ  〇     男
3 サシスセソ     〇  女
4 タチツテト  〇     女
5 ナニヌネノ     〇  男

〔Excell2007/Win XP〕


 フィルタオプションの設定で振り分けてみました。 (Hatch)
Sub Macro1()
Dim r As Range, x As String, y(5) As String, i As Long
    Set r = Sheets("Sheet1").Range("A1:D5")
    x = Sheets("Sheet1").Range("A1").Value
    y(2) = "=Sheet1!B2=""〇"""
    y(3) = "=Sheet1!C2=""〇"""
    y(4) = "=Sheet1!D2=""男"""
    y(5) = "=Sheet1!D2=""女"""
    For i = 2 To 5
        With Worksheets("Sheet" & i)
            .Range("A:A").ClearContents
            .Range("A2").Formula = y(i)
            .Range("A3").Formula = x
            r.AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=.Range("A1:A2"), CopyToRange:=.Range("A3"), Unique:=False
            .Range("1:2").Delete
        End With
    Next i
End Sub

 良く似た要望は過去にもいくつかあります。
[[20100120171452]] 『エクセルで顧客の未納者一覧を作成したい』(ぶる)
 
上記を参考にして作ると、以下のような式(一般に○[Sheet2]の式)
=IF(COUNTIF(Sheet1!$B$2:$B$5,"〇")<ROW($A1),"",INDEX(Sheet1!$A$2:$A$5,SMALL(INDEX((Sheet1!$B$2:$B$5<>"〇")*9^9+ROW($A$1:$A$4),),ROW($A1))))
 
適用セル範囲は適宜調整してください。
ROW($A$1:$A$4)に指定してあるセル範囲は必ずA1から始まるセル範囲にすることに注意。
データ量が大きいと再計算に時間がかかる場合があるので、
「フィルタオプションの設定」を利用するか、
データベースクエリを設定しておくのも良いかもしれません。
(みやほりん)(-_∂)b

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.