2016-11-16 73 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