Зачеркивание строк с определенными значениями из 2 столбцов

У меня есть код, который работает, но не полностью. Этот код принимает значения, которые вводятся в форму. Отсюда он проверяет, найдены ли эти значения в столбцах B и D. Если они оба присутствуют, то ко всей строке применяется перечеркивание.

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

Из двух искомых значений значения в столбце B могут повторяться, но значение в столбце D будет уникальным. Поэтому я думаю, что как только он обнаружит, что первый пример B & D присутствует, а затем выполняет перечеркивание, он не сможет найти другой B & D, потому что функция поиска уже нашла A.1. в столбце Б.

Dim A1 As Integer
Dim sec1 As String

'''A.1.
If sec1x = True Then   '''This is a checkbox on the form
    sec1 = "A.1."      ''' this is the value in column B
    A1 = A1x.Text      ''' this is the value that is searched for in Column D
    Dim lrow As Long
    Dim rng As Range

    lrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Row

    Dim findWS As Worksheet
    Dim findRng As Range
    Dim findStr As String
    Dim foundCell As Range
    Dim rowrng
    
    Set findWS = ActiveSheet
    Set findRng = findWS.Range("B3:B" & lrow)

    findStr = sec1
    
    Set foundCell = findRng.Find(what:=findStr, LookIn:=xlFormulas, MatchCase:=False, lookat:=xlWhole)
    Set rowrng = foundCell
        If foundCell.Offset(0, 2).Value = A1 Then
            rowrng.EntireRow.Font.Strikethrough = True
        End If
        MsgBox foundCell.Row '''This was a test, that once its done the foundcell row doesnt change
End If

Если значение столбца D уникально, сначала найдите его, а затем проверьте столбец B.

Tim Williams 14.06.2024 18:34

Не помогло, должен уточнить. Значения в столбце D не являются полностью уникальными. Например, в столбце B указано несколько значений A.1. Значения в столбце D являются числовыми. Итак, в столбце B ищется значение A.1. а затем в столбце D ищется значение 3. Находит оба значения, зачеркиванием. Следующий поиск может искать A.2. в столбце B, затем найдите значение 3 в столбце D. Я пытаюсь зачеркнуть уникальную комбинацию значений в столбце B и D. Но, похоже, это не удается при любом повторении любого отдельного значения, в отличие от их уникальной комбинации. оба.

Ryan Data Guy 14.06.2024 20:50
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
2
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что-то вроде этого должно сделать это:

Dim A1 As Long, sec1 As String
Dim lrow As Long, rng As Range, ws As Worksheet, arr
Dim findRng As Range, r As Long

If sec1x = True Then   'This is a checkbox on the form
    
    sec1 = "A.1."        ' this is the value in column B
    A1 = CLng(A1x.TEXT)  ' this is the value that is searched for in Column D
    
    Set ws = ActiveSheet
    Set findRng = ws.Range("B3:D" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)
    arr = findRng.Value 'read range data to array
    
    For r = 1 To UBound(arr, 1)    'loop over array rows
        If arr(r, 1) = sec1 Then   'check colB value
            If arr(r, 3) = A1 Then 'check colD value
                With findRng.Rows(r).EntireRow
                    .Font.Strikethrough = True
                    .Columns("N").Value = "N/A"
                End With
            End If
        End If
    Next r
End If

Большое спасибо! В дополнение к этому, как мне сделать так, чтобы в дополнение к зачеркиванию код также добавлял значение «Н/Д» в столбец N? Я пытался добавить функцию смещения в findRng, но это добавляло значение к нескольким столбцам и ко всему столбцу, а не только к ячейке в той же строке, что и найденные значения A.1.

Ryan Data Guy 17.06.2024 14:14

См. редактирование для добавления «Н/Д».

Tim Williams 17.06.2024 17:36

Другие вопросы по теме