我试图遍历一列,以查看是否存在一定系列的文本。如果可以,那么我想显示范围内存在哪些文本。
我已经尝试过for循环和每个单元格的命令,但是我不确定还有什么命令可以尝试。
对于下面显示的整个列,如果出现AH,DF,我想在范围B10中编写“ AutoCAD施工问题硬拷贝”,在B11中编写“数字文件”。如果仅出现“ DF,P”,我想在范围B10中写入“数字文件”,并在B11中进行打印。但是,如果它们全部都出现了(就像它们在下图中的显示方式一样),我想在B10中编写“ AutoCAD构造问题纸质版”。 B11中的“数字文件”和B12中的打印。我的问题是,每当创建此列表时,我都希望列表从B10开始,并且列表之间不要有空格。列表的顺序必须为AutoCAD Construction Issue硬拷贝,数字文件和打印。
我的代码粘贴在下面:
Sub Descriptions()
Range("A14:A305").ClearContents
For r = 14 To Cells(Rows.Count, "B").End(xlUp).Row
On Error Resume Next 'get rid of that... find error and fix/build logic, don't ignore it
If Range("A1").Value = "30% Design Review" Or Range("A1").Value = "Final Design Review" Then
If InStr(Cells(r, "B").Value, "BMC-9") Then
Cells(r, "E").Value = "Bill of Materials"
Cells(r, "A").Value = "DF, P"
ElseIf InStr(Cells(r, "B").Value, "MC-9") Or InStr(Cells(r, "B").Value, "CSR-9") Or InStr(Cells(r, "B").Value, "LC-9") Then
Cells(r, "A").Value = "DF, P"
End If
ElseIf Range("A1").Value = "Construction Submittal" Then
If InStr(Cells(r, "B").Value, "BMC-9") Then
Cells(r, "E").Value = "Bill of Materials"
Cells(r, "A").Value = "DF, P"
ElseIf InStr(Cells(r, "B").Value, "MC-9") Or InStr(Cells(r, "B").Value, "CSR-9") Or InStr(Cells(r, "B").Value, "LC-9") Then
Cells(r, "A").Value = "AH, DF"
End If
End If
Next
For r = 14 To Cells(Rows.Count, "B").End(xlUp).Row
If Cells(r, "A").Value = "DF, P" Then
Range("B10").Value = "Digital Files"
Range("B11").Value = "Prints"
ElseIf Cells(r, "A").Value = "AH, DF" Then
Range("B10").Value = "AutoCAD Construction Issue Hard Copy"
Range("B11").Value = "Digital Files"
End If
Next
End Sub
新编辑2019年4月11日
答案 0 :(得分:0)
我可能对您的要求感到困惑,但是,我认为您可以通过公式来实现这一目标。
...如您所见,这是一个数组公式,因此当您提交它时,请确保按 Shift + Ctrl + Enter ,否则,将使其失效。 / p>
如果它在给定范围内找到您的文本,那么您将从那里得到一个大于或等于1的数字,您可以在另一个单元格中提供另一个查找以显示您的文本。
所以,如果我尝试使用您的确切方案,这就是我想出的...
为便于理解,您可以在此处下载示例工作簿...
正如我说的那样,我认为将所有这些作为基于公式的方法来进行,将使长期维护变得更加容易。也许那只是我。
我希望能给您您想要的东西。
答案 1 :(得分:0)
Sub SeachDesc()
Dim SrchRng As Range, cel As Range
Set SrchRng = Range("A14:A305")
Range("B10:B12").ClearContents
For Each cel In SrchRng
If cel.Value = "DF, P" Then
Range("B10").Value = "Digital Files"
Range("B11").Value = "Print(s)"
ElseIf cel.Value = "AH, DF" Then
Range("B10").Value = "AutoCAD Construction Issue Hard Copy"
Range("B11").Value = "Digital Files"
End If
Next cel
If Range("B11").Value = "Print(s)" And Range("B12").Value = "Print(s)" Then
Range("B10").Value = "AutoCAD Construction Issue Hard Copy"
Range("B11").Value = "Digital Files"
Range("B12").Value = "Print(s)"
End If
End Sub