- ベストアンサー
エクセル2010の関数で教えてください。
成績表を作っています。が、エクセル初心者のため苦労しています。 1行目に氏名が入っています。 他のシートからリンク貼り付けをしたチェック印(例えば"●"印)が2行目に入ります。 3行目に、チェックのついた生徒の氏名を左から順に、順番を変えないで、詰めて表示するには、どうすればよいでしょうか。 簡単なことかもしれませんが・・・。 解説書やネットで探すのですけれども、適当なものが見当たりません。 すみませんが、どなたか教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
A3セルには次の式を入力し、式を確定する段階でCtrlキーとShiftキーを押しながらEnterキーを押します。 式の両側には{ }が表示されます。その後にその式を右横方向にドラッグコピーします。 =IF(COLUMN(A1)>COUNTIF(2:2,"●"),"",INDEX($A1:$AX1,SMALL(IF($A2:$AX2="●",COLUMN($A1:$AX1),1000),COLUMN(A1))))
その他の回答 (1)
二つのマクロを使って仕上げます。第1マクロでは、条件に合う氏名を第3行に書き出します。デー多数はいちおう10にしていますので、適宜変更してください。 シート1の第3行のデータを手入力でだい2シートの第1行にコピー貼り付けしてください。そして第2マクロを動かすと、氏名が第2行に左詰で書き出されます。ここもデー多数は10にしていますのでてきぎ直してください。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2013/3/24 ユーザー名 : ' 'Dim mycol As intger Dim mycol As Integer For mycol = 1 To 10 If Cells(2, mycol) = "●" Then Cells(3, mycol) = Cells(1, mycol) Else End If Next ' End Sub Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2013/3/24 ユーザー名 : ' Dim mycol As Integer, mycol2 As Integer mycol2 = 1 For mycol = 1 To 10 If Cells(1, mycol) <> "" Then Cells(2, mycol2) = Cells(1, mycol) mycol2 = mycol2 + 1 Else End If Next ' End Sub
お礼
早速教えていただきありがとうございました。 マクロは勉強しなくては、しなくてはと思いつつ、関数で手間取っている段階です。 この機会に、がんばって取り組んでみます。 ありがとうございました。
お礼
早速、しかもご丁寧に教えていただきありがとうございました。 この方法でやってみます。 感謝します。