Я пытаюсь перебрать столбец, чтобы увидеть, существует ли определенная серия текста. Если это так, то я хочу показать, какой текст существует в диапазоне.

Я пробовал цикл и команды для каждой ячейки, но я не уверен, какие еще команды попробовать.

Для всего столбца, показанного ниже, если отображается AH, DF, я хочу написать «Бумажную копию проблемы конструирования AutoCAD» в диапазоне B10 и «Цифровые файлы» в B11. Если появляется только «DF, P», я хочу написать «Цифровые файлы» в диапазоне B10 и «Печать в B11». Однако, если все три из них появятся (например, как на картинке ниже), я хочу написать «Твердый экземпляр проблемы AutoCAD Construction» в B10. «Цифровые файлы» в 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

Новый Редактировать 04/11/2019

enter image description here

0
RawrRawr7 11 Апр 2019 в 07:26

2 ответа

Лучший ответ

Я могу быть смущен тем, что вы спрашиваете, но, я думаю, вы можете достичь этого с помощью формулы.

enter image description here

... как вы можете видеть, это формула массива, поэтому, когда вы собираетесь ее зафиксировать, обязательно нажмите Shift + Ctrl + Enter , в противном случае она станет бесполезной.

Если он находит ваш текст в заданном диапазоне, вы получите число, большее или равное 1, оттуда вы можете предоставить другой поиск из другой ячейки для отображения вашего текста.

Так что, если я попытаюсь использовать ваш точный сценарий, это то, что я придумал ...

Example

Чтобы было легче понять, вы можете скачать пример учебника здесь ...

Пример рабочей книги

Как я уже сказал, я думаю, что выполнение всего этого в качестве подхода на основе формул облегчит поддержание долгосрочной перспективы. Может быть, это только я, хотя.

Я надеюсь, что это дает вам то, что вы хотите.

0
Skin 11 Апр 2019 в 23:30

enter image description here

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
0
RawrRawr7 11 Апр 2019 в 12:58