2016-11-16 38 views
0

我有一個Excel宏,將列從一張紙轉換到新紙張。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 

這工作得很好,但我需要從「列C」 while語句中修剪括號,我能成功地通過使用功能中旬通過更新像下面的代碼修剪括號。

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包含單詞「父」然後中間([列C],2,10) else mid [(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

相關問題