• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:塗潰されたセルと同じ色の数字同士を抽出して並べる)

塗潰されたセルの色の数字を抽出して並べる方法を知りたい

このQ&Aのポイント
  • 5×5マスの4つの中で同じ色で塗潰されたセルの数字を左から右に昇順に並べる方法を知りたい。
  • 5×5マスの4つの中で同じ色で塗り潰されたセルの数字を抽出し、昇順に並べる方法を教えてください。
  • Excel 2016を使用して、5×5マスの4つの中で同じ色の塗り潰されたセルの数字を抽出し、左から右に昇順に並べる方法を教えてください。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

済みません。この通りに作るのが面倒で、適当に自分でデータを作りました。 その時、全ての色が使われているデータを作ってしまいました。 使われてない色があっても大丈夫なように直しました。 Option Explicit ' Sub Macro1()   Dim Cell As Range   Dim ColorTbl As String   Dim ColorStr As String   Dim Row As Long   Dim Index As Integer   Dim Colu As Long '   [N:XFD].ClearContents   Application.ScreenUpdating = False '   For Each Cell In [M1:M4]     ColorTbl = ColorTbl & Chr(Cell.Interior.ColorIndex)   Next Cell '   For Row = 1 To Cells(Rows.Count, "A").End(xlUp).Row Step 13 '     For Each Cell In Cells(Row, "A").Resize(11, 11)       ColorStr = Chr(Cell.Interior.ColorIndex)       Index = InStr(ColorTbl, ColorStr) - 1 '       If Index >= 0 Then         Colu = _           Cells(Row + Index, Columns.Count).End(xlToLeft).Column + 1         Colu = WorksheetFunction.Max(Colu, 14)         Cells(Row + Index, Colu) = Cell       End If     Next Cell '     For Index = 0 To 3       Colu = Cells(Row + Index, Columns.Count).End(xlToLeft).Column '       If Colu > 12 Then         Set Cell = Cells(Row + Index, "N").Resize(, Colu - 13) '         With ActiveSheet.Sort           .SortFields.Clear           .SortFields.Add Cell           .SetRange Cell           .Orientation = xlLeftToRight           .Apply         End With       End If   Next Index, Row End Sub

sazanami0422
質問者

お礼

修正頂いたソースで実行確認問題なくできました。 ありがとうございました。

その他の回答 (1)

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.1

Option Explicit ' Sub Macro1()   Dim Cell As Range   Dim ColorTbl As String   Dim ColorStr As String   Dim Row As Long   Dim Index As Integer   Dim Colu As Long '   [N:XFD].ClearContents   Application.ScreenUpdating = False '   For Each Cell In [M1:M4]     ColorTbl = ColorTbl & Chr(Cell.Interior.ColorIndex)   Next Cell '   For Row = 1 To Cells(Rows.Count, "A").End(xlUp).Row Step 13 '     For Each Cell In Cells(Row, "A").Resize(11, 11)       ColorStr = Chr(Cell.Interior.ColorIndex)       Index = InStr(ColorTbl, ColorStr) - 1 '       If Index >= 0 Then         Colu = _           Cells(Row + Index, Columns.Count).End(xlToLeft).Column + 1         Colu = WorksheetFunction.Max(Colu, 14)         Cells(Row + Index, Colu) = Cell       End If     Next Cell '     For Index = 0 To 3       Colu = Cells(Row + Index, Columns.Count).End(xlToLeft).Column       Set Cell = Cells(Row + Index, "N").Resize(, Colu - 13) '       With ActiveSheet.Sort         .SortFields.Clear         .SortFields.Add Cell         .SetRange Cell         .Orientation = xlLeftToRight         .Apply       End With   Next Index, Row End Sub

sazanami0422
質問者

補足

いつも大変お世話になっております。 回答を頂きましたソースを実行した所、 縦に3つある(5×5マスが4つの)うち、 一番目の5×5マスが4つの塗潰されたセルの数字は右に並んだ後、 「Microsoft Visual Basic for Applications 400」のエラーが出て止まります。 どこが悪いのでしょうか?