2016-07-15 8 views
0

Excelで表の列の内容の順序をある規則で変更し、この方法で表全体を並べ替えることに興味があります。 あなたが理解できるようにここに例を掲載します。Excel 2013で列内容の順序を変更する

は、あなたがテーブルでこの列を持っているとしましょう:

Column 
A 
B 
C 
B 
C 
A 
A 
B 
C 

を、私はそれがこのような終わりに見てみたい:

Column 
    A 
    B 
    C 
    A 
    B 
    C 
    A 
    B 
    C 

これは可能ですか?

+0

これは、あなたの質問にお答えしていますか? http://stackoverflow.com/questions/9194277/column-data-moving-to-right-with-excel-vba最初の答えの関数を使用して、列を移動することができます。それは正確にあなたが探しているものではないかもしれません。なぜならあなたの例では文字が繰り返され、重複が必要なのかどうかわからないからです。 – Jake

+0

私はこれを言及していませんでした... A B C A、etc。列見出しではなく、列の内容です。 –

答えて

0

ブローコードで試してください。

注:作業の私はSheet8

で働い
Sub orderchange() 
    Dim lastcolumn, i, keyval As Long 
    Dim fixit As String 
    lastcolumn = Sheets("Sheet8").Cells(1, Columns.Count).End(xlToLeft).Column 
    For i = 1 To lastcolumn Step 3 
     If Sheets("Sheet8").Cells(1, i) = "A" And Sheets("Sheet8").Cells(1, i + 1) = "B" And Sheets("Sheet8").Cells(1, i + 2) = "C" Then 
      'nothing 
     Else 
      If Sheets("Sheet8").Cells(1, i) <> "A" And Sheets("Sheet8").Cells(1, i + 1) = "A" Then 
       fixit = Sheets("Sheet8").Cells(1, i) 
       Sheets("Sheet8").Cells(1, i) = Sheets("Sheet8").Cells(1, i + 1) 
       Sheets("Sheet8").Cells(1, i + 1) = fixit 
      ElseIf Sheets("Sheet8").Cells(1, i) <> "A" And Sheets("Sheet8").Cells(1, i + 2) = "A" Then 
       fixit = Sheets("Sheet8").Cells(1, i) 
       Sheets("Sheet8").Cells(1, i) = Sheets("Sheet8").Cells(1, i + 2) 
       Sheets("Sheet8").Cells(1, i + 2) = fixit 
      End If 

      If Sheets("Sheet8").Cells(1, i + 1) <> "B" And Sheets("Sheet8").Cells(1, i + 2) = "B" Then 
       fixit = Sheets("Sheet8").Cells(1, i + 1) 
       Sheets("Sheet8").Cells(1, i + 1) = Sheets("Sheet8").Cells(1, i + 2) 
       Sheets("Sheet8").Cells(1, i + 2) = fixit 
      ElseIf Sheets("Sheet8").Cells(1, i + 1) <> "B" And Sheets("Sheet8").Cells(1, i) = "B" Then 
       fixit = Sheets("Sheet8").Cells(1, i + 1) 
       Sheets("Sheet8").Cells(1, i + 1) = Sheets("Sheet8").Cells(1, i) 
       Sheets("Sheet8").Cells(1, i) = fixit 
      End If 

      If Sheets("Sheet8").Cells(1, i + 2) <> "C" And Sheets("Sheet8").Cells(1, i) = "C" Then 
       fixit = Sheets("Sheet8").Cells(1, i + 2) 
       Sheets("Sheet8").Cells(1, i + 2) = Sheets("Sheet8").Cells(1, i) 
       Sheets("Sheet8").Cells(1, i) = fixit 
      ElseIf Sheets("Sheet8").Cells(1, i + 2) <> "C" And Sheets("Sheet8").Cells(1, i + 1) = "C" Then 
       fixit = Sheets("Sheet8").Cells(1, i + 2) 
       Sheets("Sheet8").Cells(1, i + 2) = Sheets("Sheet8").Cells(1, i + 1) 
       Sheets("Sheet8").Cells(1, i + 1) = fixit 
      End If 
     End If 
    Next i 
End Sub 

が証明

enter image description here

+0

ありがとうございました!しかし、A、B、C ...は列の内容です。したがって、A、B、Cを含む行を持つ単一の列があります。これを実行できるようにコードを変更できると思いますか? –

+0

あなたの言っていることを私は得ることができません。はいA、B、Cは列の内容です。それが必要なのですか?はいの場合は、あなたが期待した。 Plsはスナップではっきりと言う –