おすすめのモーニング・朝食メニューを教えて!

添付の表にあるとおりA列の○印が条件で
○印のあるC列の社名をE列に上から詰めて表示させたいのですが、関数で解決したいと思っています。いい方法ありましたら教えてください。よろしくお願いします。

「○印がある場合、そこから情報を抽出して上」の質問画像

A 回答 (4件)

「配列数式」の定義にもよりますが、


[普通にEnterして通る数式で]ということであれば、

E4セルを

 =IF(ROW()-ROW(E$3)>COUNTIF(A$4:A$10,"○"),"",INDEX(C:C,1/LARGE(INDEX((A$4:A$10="○")/ROW(A$4:A$10),),ROW()-ROW(E$3))))

として下方にフィル。

もう一方の課題はともかく、
この程度であれば実務で使わなくもないと思います。

その場限りの使い捨て数式なら

 =IF(ROW(A1)>COUNTIF(A$4:A$10,"○"),"",INDEX(C:C,1/LARGE(INDEX((A$4:A$10="○")/ROW(A$4:A$10),),ROW(A1))))

こんな書き方も。私は嫌いですけど。

ご参考まで。
    • good
    • 0
この回答へのお礼

2件の質問に回答頂き、私の希望している数式で回答して頂きありがとうございます。
2件とも同じファイル内で使用することと、作業用シートも追加したため、両方とも作業用シートにより処理することにさせて頂きました。
当方の質問が面倒な内容であるにも関わらず、希望していた回答が頂けることをとてもありがたく感じています。
お礼が遅くなりましたが、また見かけたときもアドバイス頂ければありがたいです。

お礼日時:2009/07/22 23:11

No2 merlionXXです。



> 可能であれば作業用の列や配列数式を使わずに1つの数式でできればありがたいです。

そんなものがあれば最初からそれを回答しています。
作業用の列や配列数式を使わないならあとはマクロしかないです。
やりたければ以下の手順でやってください。

1. そのようなことをしたいシートのタブを右クリック、[コードの表示]。
2. 出てきた白い所に、下記のコードを貼付けます。

'********これより下**********

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A4:A13")) Is Nothing Then Exit Sub
Range("E4:E13").ClearContents
n = 4
For i = 4 To 13
If Cells(i, "A") = "○" Then
Cells(n, "E").Value = Cells(i, "A").Offset(, 2).Value
n = n + 1
End If
Next
End Sub

'********これより上**********

3. 右上の × でExcelの画面に戻ります。

これでA4~A13の中で○をつけたり消したりすればE4~E13に上から順に表示します。
    • good
    • 1
この回答へのお礼

回答頂き、お礼遅くなりまして申し訳ありません。
当方がマクロを理解していないことを汲んで頂けたのかコピーペーストするだけで使えるように回答して頂きありがとうございます。
マクロも今後覚えたいと思っていますので、今回使用させて頂くには至りませんでしたが勉強になりました。
丁寧な回答ありがとうございました。

お礼日時:2009/07/22 22:57

作業列を使う方法です。



仮にあいているD列を作業列にする場合
D4に
=COUNTIF($A$4:A4,"○")
と入れて下までコピーします。
次にE4に
=IF(ISNA(MATCH(ROW(A1),$D$4:$D$13,0)),"",OFFSET($C$3,MATCH(ROW(A1),$D$4:$D$13,0),0))
と入れて下までコピーします。
「○印がある場合、そこから情報を抽出して上」の回答画像2
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
可能であれば作業用の列や配列数式を使わずに1つの数式でできればありがたいです。

お礼日時:2009/07/07 16:48

E4のセルに以下のように数式バーに入力し、


CtrlキーとShiftキーを押しながら、Enterキーで確定します。
E4のセルの数式をE13までコピーします。

=IF(COUNTIF($A$4:$A$13,"○")>=ROW(A1),INDEX($D$1:$D$13,SMALL(IF($A$4:$A$13="○",ROW($A$4:$A$13),""),ROW(A1))),"")
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
可能であれば作業用の列や配列数式を使わずに1つの数式でできればありがたいです。

お礼日時:2009/07/07 16:48

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報