2016-03-30 12 views
0

私は現在、複数の列を含むスプレッドシートで作業していますが、それに応じて1,2または3の番号を示す各行に10,11および12の行があります。具体的には、下の図を参照してください。値をローテーションするマクロ

http://i.imgur.com/QezrzqW.png

私はそれが使用されるたびに値をシフトするマクロを構築する必要があるので、列A内のセルは、B12 = 3 A10 = 1、A11およびA12 =ブランク、列Bに変化します、B10とB12 =空白、C列からC11 = 2、C10とC12 =空白など)マクロは列ACに達するまで実行されます。

これは可能ですか?私は毎日値を変更しなければならないので、複数の列に対してかなり退屈になる可能性があります。

敬具、 トール

+0

画像が空白...また、作成したコーディングの努力が表示されない場合、質問は無視され、閉じられます。 –

答えて

0

ない非常にエレガントな、しかしこれはあなたが説明した何を...

Option Explicit 
Option Base 1 

Sub Simple() 
Dim iloop As Integer 

For iloop = 1 To 29 
    If Sheets("Sheet1").Cells(10, iloop) = 1 Then 
     Sheets("Sheet1").Cells(10, iloop) = "" 
     Sheets("Sheet1").Cells(11, iloop) = 2 
    Else 
     If Sheets("Sheet1").Cells(11, iloop) = 2 Then 
      Sheets("Sheet1").Cells(11, iloop) = "" 
      Sheets("Sheet1").Cells(12, iloop) = 3 
     Else 
      If Sheets("Sheet1").Cells(12, iloop) = 3 Then 
       Sheets("Sheet1").Cells(12, iloop) = "" 
       Sheets("Sheet1").Cells(10, iloop) = 1 
      End If 
     End If 
    End If 

Next iloop 
End Sub 
+0

ありがとうございました!それは魅力のように働いた。同じようなコードを使っていたので(私の最初の投稿ので、私はそれを投稿することを忘れてしまった)、運がない。 –

1

列Aを充填取得する方法についてのご質問によって明らか、しかし、のようなものではありません

Public Sub MoveRight() 
    Dim sh As Worksheet 
    Dim area As Range 

    Set sh = ActiveSheet 
    With sh 
     Set area = .Range(.Cells(10, 1), .Cells(12, 29)) 
    End With 

    Dim r As Long, c As Long 

    With area 
     For c = .Columns.Count To 2 Step -1 
      For r = 1 To .Rows.Count 
       .Cells(r, c).Value = .Cells(r, c - 1).Value 
      Next r 
     Next c 
     For r = 1 To .Rows.Count 
      If .Cells(r, 4).Value = r Then 
       .Cells(r, 1).Value = r 
      Else 
       .Cells(r, 1).Value = vbNullString 
      End If 
     Next r 
    End With 
End Sub 
関連する問題