- ベストアンサー
○印がある場合、そこから情報を抽出して上から順に表示
- みんなの回答 (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)))) こんな書き方も。私は嫌いですけど。 ご参考まで。
その他の回答 (3)
- merlionXX
- ベストアンサー率48% (1930/4007)
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に上から順に表示します。
お礼
回答頂き、お礼遅くなりまして申し訳ありません。 当方がマクロを理解していないことを汲んで頂けたのかコピーペーストするだけで使えるように回答して頂きありがとうございます。 マクロも今後覚えたいと思っていますので、今回使用させて頂くには至りませんでしたが勉強になりました。 丁寧な回答ありがとうございました。
- merlionXX
- ベストアンサー率48% (1930/4007)
- kybo
- ベストアンサー率53% (349/647)
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))),"")
お礼
早速の回答ありがとうございます。 可能であれば作業用の列や配列数式を使わずに1つの数式でできればありがたいです。
お礼
2件の質問に回答頂き、私の希望している数式で回答して頂きありがとうございます。 2件とも同じファイル内で使用することと、作業用シートも追加したため、両方とも作業用シートにより処理することにさせて頂きました。 当方の質問が面倒な内容であるにも関わらず、希望していた回答が頂けることをとてもありがたく感じています。 お礼が遅くなりましたが、また見かけたときもアドバイス頂ければありがたいです。