我有一个专栏(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
答案 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
方法无法正常工作,因此我对其进行了更改。
让我们更具体地了解您在细胞中得到的公式所需的内容。