VBA - 如果单元格包含字符串,则用第一个字母替换单元格

时间:2016-05-16 14:30:35

标签: excel vba excel-vba formula

我有一个专栏(A),其中包含一些有关已回答问题的数据。有些行是空白而其他行包含“2(满分为2)”,即他们回答了2个问题中的2个,但这可能会有所不同(3个中有3个,6个中有6个,10个中有10个,......)。

我有兴趣在这一栏中看到的是第一个数字,否则它可以保持空白。

我正在尝试创建一个遍历该范围的宏,如果一个单元格包含“(,则将其替换为 left函数,1 但我遇到了一些困难。

我在另一个帖子上找到了这个脚本,这个帖子在我做的测试页面上工作,但它似乎不适用于我的实际数据?

Dim owb As Excel.Workbook
Set owb = ActiveWorkbook

Dim mystr As String
RowCount = WorksheetFunction.CountA(owb.Sheets("RFP").Range("A:A"))
For i = 2 To RowCount
    mystr = Trim(Cells(i, 1).Value)
    If InStr(mystr, "(out of") > 0 Then
        Cells(i, 1).Value = Left(mystr, InStr(mystr, "(out of"))
    End If
Next

我真的不明白'For i = 2 To RowCount'是什么意思。以上是否在右边,如何用公式替换A列中相关单元格中的内容?

由于 艾伦

------------ This is the current format of the file

1 个答案:

答案 0 :(得分:0)

修改

以下代码应该清除问题(假设问题是你留下了一个尾随的左括号)。

Sub Test()
    Dim owb As Excel.Workbook
    Dim sWorking As Worksheet
    Dim rAnchor As Range
    Dim nLastRow As Long
    Dim nLastCol As Long
    Dim rAnalyze As Range

    Set owb = ActiveWorkbook
    Set sWorking = owb.Sheets("RFP")

    'Below anchors where the range to work on starts. If this can vary, you have to change
    'to best reflect the start point.

    Set rAnchor = sWorking.Range("I12")

    'Determine the last row in the anchor's column
    nLastRow = sWorking.Cells(Rows.Count, rAnchor.Column).End(xlUp).Row

    'Determine the last column the in the anchor's row
    nLastCol = sWorking.Cells(rAnchor.Row, Columns.Count).End(xlToLeft).Column

    Set rAnalyze = sWorking.Range(rAnchor, sWorking.Cells(nLastRow, nLastCol))

    For Each cel In rAnalyze
        mystr = Trim(cel.Value)
        If InStr(mystr, "(out of") > 0 Then
            cel.Value = Left(mystr, InStr(mystr, "(out of") - 2)
        End If
    Next cel
End Sub

For而言,它只是循环遍历列中的所有单元格。如果您有空白单元格,那么您最初使用的COUNTA方法无法正常工作,因此我对其进行了更改。

让我们更具体地了解您在细胞中得到的公式所需的内容。