【问题标题】:Excel macro to if contains elseExcel 宏到 if 包含 else
【发布时间】:2016-11-17 01:03:15
【问题描述】:

我有一个 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 语句中,我可以通过使用 mid 函数通过更新如下代码来成功修剪括号。

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([C 列],2,36)

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

谢谢!

【问题讨论】:

    标签: vba excel macros


    【解决方案1】:

    如果只需要剪掉首尾字符,那么可以在函数参数中使用字符串的长度:

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

    适用于任何长度的字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 2018-09-20
      相关资源
      最近更新 更多