2016-11-16 16 views
0

Excelのマクロを使用して、1つのシートから新しいシートに列を変換します。他の場合はExcelマクロ

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
Sheets.Add.Name = "Sheet2" 
Worksheets("Sheet2").Cells(1, 1).Value = "Column A" 
Worksheets("Sheet2").Cells(1, 2).Value = "Column B" 
Worksheets("Sheet2").Cells(1, 3).Value = "Column C" 
Worksheets("Sheet2").Cells(1, 4).Value = "Column D" 

Worksheets("data").Activate 
SourceColumn = 2 
SourceRow = 2 
Cells(SourceRow, 1).Activate 
TargetRow = SourceRow 
targetcolumn = 1 
batchValue = InputBox("Enter value for Batch ID column") 

While Cells(1, SourceColumn).Value <> "" 

While ActiveCell.Value <> "" 
Worksheets("Sheet2").Cells(TargetRow, 1).Value = batchValue 
Worksheets("Sheet2").Cells(TargetRow, targetcolumn + 1).Value = ActiveCell.Value 
Worksheets("Sheet2").Cells(TargetRow, targetcolumn + 2).Value = Worksheets("Data").Cells(1, SourceColumn).Value 
Worksheets("Sheet2").Cells(TargetRow, targetcolumn + 3).Value = Worksheets("Data").Cells(SourceRow, SourceColumn).Value 
SourceRow = SourceRow + 1 
targetcolumn = 1 
TargetRow = TargetRow + 1 
Cells(SourceRow, 1).Activate 
Wend 
SourceColumn = SourceColumn + 1 
SourceRow = 2 
Cells(SourceRow, 1).Activate 

Wend 
With Worksheets("Sheet2").Sort 
.SetRange Range(Cells(2, 1), Cells(TargetRow, 3)) 
     .Header = xlNo 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
End With 


End Sub 

これは正常に動作しますが、私はwhile文では「列C」 から括弧をトリミングする必要がある、私は正常に以下のようなコードを更新することにより、ミッド機能を使って、括弧をトリミングできます。

Worksheets("Sheet2").Cells(TargetRow, targetcolumn + 2).Value = mid(Worksheets("Data").Cells(1, SourceColumn).Value, 2, 36) 

しかし、私が見つけたことは必要とは異なる長さを持っているいくつかの値があるということでした....

mid(Worksheets("Data").Cells(1, SourceColumn).Value, 2, 10) 

だから私は挿入する必要があります。..

列の場合Cは "parent"という単語を含んでいて、mid([Column C]、2,10) else mid([Column C]、2,36)

この仕事を完了するための最も簡単な方法は何ですか?

ありがとうございました!

答えて

1

あなただけの、あなたは関数パラメータ内の文字列の長さを使用することができ、最初と最後の文字をトリミングする必要がある場合:

任意の長さの文字列のために動作します
Worksheets("Sheet2").Cells(TargetRow, targetcolumn + 2).Value = mid(Worksheets("Data").Cells(1, SourceColumn).Value, 2, Len(Worksheets("Data").Cells(1, SourceColumn).Value) - 2) 

+0

これは機能しました。ありがとうございました! – user2747356

関連する問題