[[20050420131054]] 『条件が合う値だけを抽出したいのですが』(ピョン) ページの最後に飛ぶ

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

 

『条件が合う値だけを抽出したいのですが』(ピョン)
 いつもお世話になってます(^o^)/   またまた質問させてください。
 シート1に果物の名前と、金額が入ってたり入ってなかったりしています。
 名前と金額が入ってるものだけを、自動的に違うシートに抽出したいのですが、
 そんな事ってできるのだしょうか?

 Sheet1                  Sheet2
    A         B             A        B
 1 いちご    580         1 いちご    580 			
 2 みかん                2 りんご    670
 3 りんご    670         3 メロン  2,500
 4 すもも                4
 5 メロン  2,500         5
 6 ぶどう                6      

 オートフィルタで空白以外を抽出して、それをコピーして
別シートに貼り付ける。
以上をマクロの記録する。
でどうでしょうか?
ということでさっそく記録してみましたぁ。
Option Explicit
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2005/4/20  ユーザー名 : SoulMan
'

'

    Selection.AutoFilter
    Selection.AutoFilter Field:=2, Criteria1:="<>"
    Selection.CurrentRegion.Select
    Selection.Copy
    Sheets("Sheet2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub
(SoulMan)

 私は数式で。
Sheet2のA1に	
=IF(COUNT(Sheet1!$B$1:$B$10)<ROW(),"",INDEX(Sheet1!A$1:A$10,SMALL(IF(Sheet1!$B$1:$B$10<>"",ROW($A$1:$A$10)),ROW())))
でCtrl+Shift+Enterで配列数式にします。
必要範囲にコピーします。
(ケン)

 返事が遅れてしまいました。
 値が直接流れる方が都合がよかったので、ケンさんの数式で挑戦したところ、
 例題通りだと うまくいくんですが、実際のワークグックで応用すると
 範囲とか抽出先のセル値が違うので、うまくいきません(ToT)
 レベルが低くて申し訳ないのですが、数式の意味を教えてほしいのです。
 お願いしますm(__)m
 (ピョン)

 横から失礼します。ケンさんの式をちょっとだけ変えてみます。

 =IF(COUNT(Sheet1!$B$1:$B$10)<ROW(A1),"",INDEX(Sheet1!A$1:A$10,SMALL(IF(Sheet1!$B$1:$B$10<>"",ROW($A$1:$A$10)),ROW(A1))))
                                 ~~~~                                                         ~~~~~~~~~~~~~~~      ~~~
 ROW(A1)・・・括弧の中にA1を追加しました。
 $B$1:$B$10はデータの入っている範囲を指定しますが、
 ROW(A1)は常にこのまま入れます。(いつでも1から始まるように)
 この式が1行目に入っているなら、ケンさんの式のようにA1を省略しても同じ結果になります。

 ROW($A$1:$A$10)のところは$B$1:$B$10とおなじ大きさで、$A$1から指定します。
 例えば、$B$11:$B$30だったら、$A$1:$A20といった感じに。(いつでも1からnまでの数になるように)
 ただし、Sheet1!A$1:A$10 のほうは、実際にデータの入っている範囲です。
 同じ「A$1:A$10」ですが、意味が違いますから。

 といったことで、できるのではないでしょうか・・・たぶん?
 もしうまくいかなかったら、ケンさんに再登場をお願いします。
 (sato)

 satoさん、ありがとうございます。土日がお休みで、今やっと見ることができました。
 なんとなくですが、意味がわかって抽出することができました〜♪
 ところが、問題点がでてきました。
 金額の列は、Sum(Sheet3:Sheet10!B1)というような数式になっていて、
 0が入ってしまっているため、全てが抽出されてしまいます(><)
 質問する時に最初から書いておくべきでした。ごめんなさい。
 そんな時はどうしたらいいのでしょう?
 (ピョン)

 $B$1:$B$10<>0としたらどうですか。
IF(COUNT(Sheet1!$B$1:$B$10)<ROW(A1)この部分もCOUNTIFにかえて0以外の物をカウント
します。
(ケン)

 できました。初歩的な事なのにお恥ずかしい限り…
 ありがとうございました。  また宜しくお願いします。
 (ピョン)


コメント返信:

[ 一覧(最新更新順) ]


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