Как найти значение ячейки на другом листе и поместить значение в другой столбец для строки, где было найдено первое значение - PullRequest
0 голосов
/ 24 апреля 2019

(я признаю, что я новичок в vba, поэтому извините, если это глупый вопрос - извините за любые ошибки на английском)

Немного предыстории:

Я несу ответственность за график работы агентов поддержки в моей компании.Например, их лидеры могут отправлять запросы на удаление их из графика.И может быть более одного запроса на агента в тот же день.(расписание на день)

Итак, у меня есть две таблицы: «Запросы» и «Расписание»

На листе запроса: мне нужно проверить столбец для каждого типа запросов (Отпуск, выходной ..) (столбец «E») Если я нахожу этот запрос, мне нужно письмо агента из другой строки (столбец P), найдите это письмо на рабочем листе «Расписание» (столбец «A») и разместите«1» в столбце «AI» (я должен сообщать о количестве каждого запроса)

У меня были проблемы с поиском агента в таблице «Расписание» и размещением «1».и я пробовал другие коды, но это последний, над которым я работал (коллега по работе предложил "Do While" и "Find")

(на данный момент Excel просто падает)

Вот что я пробовал:

If wal.Cells(row, 5) = "Remove from the Schedule - Vacation" Then
    'Application.WorksheetFunction.Match(wal.Cells(row, 16).Value, wsc.Range("A:A"), 0).row
    wsc.Cells(Application.WorksheetFunction.Match(wal.Cells(row, 16).Value, wsc.Range("A:A"), 0).row, 35) = 1

И

ElseIf Cells(row, 5) = "Remove from the Schedule - Vacation" Then
    row = Application.WorksheetFunction.Match(wal.Cells(row, 16), sc.Range("A:A"), 0)
    wsc.Cells(row, 35) = 1

    Set wal = Worksheets("Alterações")
    Set wsc = Worksheets("Schedule")

    i = 5
    j = 41

    Do While wal.Range("E" & i) <> 0
        If wal.Range("E" & i) = "Remover do Schedule - Férias"  Then        
            Set agent = wal.Range("P" & i).Find(wsc.Range("A" & j).Value).row                
            Range("AI" & agent) = 1
        End If
    Loop

1 Ответ

0 голосов
/ 24 апреля 2019

Посмотрите на пример Find ниже

Sub demo()
    Dim wal As Worksheet: Set wal = Worksheets("Alterações")
    Dim wsc As Worksheet: Set wsc = Worksheets("Schedule")
    Dim rng As Range, UserRow As Range
    Dim UserEmail As String

    With wal
        Set rng = .Columns(5).Find("Remove from the Schedule - Vacation")
        If Not rng Is Nothing Then
            UserEmail = rng.Offset(0, 11).Value2
            Debug.Print rng.Address, UserEmail
            With wsc
                Set UserRow = .Columns(1).Find(what:=UserEmail)
                If Not UserRow Is Nothing Then
                    UserRow.Offset(0, Columns("AI").Column - UserRow.Column).Value2 = 1
                End If
            End With
        End If
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...