• 締切済み

成績処理

成績処理で困ってます。 添付画像のようにA1:B6の中から60点以下の学生の氏名を抽出し、結合したD2の位置に連続して表示させるようなエクセルの関数かマクロがあれば至急どなたかお教え頂きたいのですが・・・ よろしくお願いいたします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

Sub Sample()   Dim sString As String 'この変数に60点以下の氏名を結合した文字列を入れます。   Dim i   For i = 2 To 6 '2行目~6行目までが対象   '対象行のB列の値が60以下なら変数sStringに、A列のデータ(氏名)+「,」を追加     If Cells(i, 2) <= 60 Then sString = sString & Cells(i, 1) & ","   Next i   '変数sStringが空でなければ最後の「,」を削除(例:B,C,→B,C )   If Len(sString) > 0 Then sString = Left(sString, Len(sString) - 1)   Range("D2") = sString 'セルD2に変数sStringの値を反映 End Sub コレで良いですか? それとも、マクロの使い方が不明?

すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

マクロでやろうと思うと以下の様になります。 Sub Sample()   Dim sString As String   Dim i   For i = 2 To 6     If Cells(i, 2) <= 60 Then sString = sString & Cells(i, 1) & ","   Next i   If Len(sString) > 0 Then sString = Left(sString, Len(sString) - 1)   Range("D2") = sString End Sub 集計表示の方法を考え直した方が良いと思います。Excel的ではありません。

haruhimeyo
質問者

補足

すみません、素人なものでもう一つ質問なのですが、上記のマクロの意味が分かっていません。できましたら説明頂ければ幸いです。

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

オートフィルタを使えば楽ですが、元表をいじりたくないなら D1に「点数」、D2に「<=60」と記入し フィルタの詳細で、リスト範囲に「A1:B6」、検索条件範囲に「D1:D2」を指定 抽出先を「指定した範囲」に変更して、抽出範囲に「F1」を指定し「OK」すると 該当データが抽出されます

すると、全ての回答が全文表示されます。

関連するQ&A