• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで成績順・均等の併存するグループ分け)

エクセルで成績順・均等の併存するグループ分け

このQ&Aのポイント
  • エクセルを利用して成績順・均等なグループ分けを自動化する方法を探しています。
  • サンプルデータを元に説明します。表からカッティングポイントを元にAグループとBグループを作成し、Aグループ内で男性と女性を別々にグループ分けします。
  • 作業は連番、氏名、性別、点数の表から行われ、VBAでボタンを押すと自動で実行されるようにしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

後記コードでいかがでしょうか。 実行後にフィルターは設定していません。 マクロで設定する必要があれば指摘してください。 Option Explicit Sub sample()  Dim r As Long  Dim LastRow As Long  Dim CPoint As Long  Dim SW As Boolean    '最終行を取得  LastRow = Cells(Rows.Count, 4).End(xlUp).Row - 1  CPoint = Cells(LastRow + 1, 4).Value    'A,Bをセット  For r = 2 To LastRow   If Cells(r, 4).Value < CPoint Then    Cells(r, 5).Value = "B"    Cells(r, 6).Value = "B"   Else    Cells(r, 5).Value = "A"   End If  Next r    '男性のAをA1,A2と交互に分類  SW = True  For r = 2 To LastRow   If Cells(r, 5).Value = "A" And Cells(r, 3).Value = "男" Then    If SW = True Then     Cells(r, 6).Value = "A1"    Else     Cells(r, 6).Value = "A2"    End If    SW = Not SW   End If  Next r    '女性のAをA1,A2と交互に分類  SW = True  For r = 2 To LastRow   If Cells(r, 5).Value = "A" And Cells(r, 3).Value = "女" Then    If SW = True Then     Cells(r, 6).Value = "A1"    Else     Cells(r, 6).Value = "A2"    End If    SW = Not SW   End If  Next r End Sub

tamahome55
質問者

お礼

Hohopapaさん、質問の仕方のご指摘から、今回のコードのご教授まで、重ね重ねありがとうございました! A1とA2の変化にBooleanを利用するのですね。ここを一番悩んでいたのですが、 Not SWで反転できるということを今回初めて知りました。 実は最初「型が一致しない…」とのエラーが出たのですが、 CPoint = Cells(LastRow + 1, 4).Value を CPoint = Cells(LastRow + 1, 5).Value と訂正することで正常に動作しました。 これを元に、実務に適用したいと思います。

関連するQ&A