Excelmacros如果包含其他

我有一个Excelmacros,将列从一个表单转换为新表单。

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列中包含单词“parent”,那么mid([C列],2,10)else中间([C列] 2,36)

什么是完成这项工作最简单的方法?

谢谢!

如果您只需要修剪第一个和最后一个字符,则可以在函数参数中使用string的长度:

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

这将适用于任何长度的string。