Найти все строки на основе значения ячейки и скопировать на другой лист.

Поскольку спецификация явно сообщает об этом. Обратите внимание на разницу между 11.6.1 шагами 5-8 и 11.6.2, шаги 5-7.

11.6.1 - описывает, как работает оператор сложения

blockquote>

1-4. ...

5. Пусть lprim - ToPrimitive (lval).

6. Пусть rprim be ToPrimitive (rval).

7. Если Type (lprim) - String или Type (rprim) - String, то

7a. Верните строку, которая является результатом объединения ToString (lprim), а затем ToString (rprim)

8. Вернуть результат применения операции добавления в ToNumber (lprim) и ToNumber (rprim)

11.6.2 - описывает, как работает оператор вычитания

blockquote>

1-4. ...

5. Пусть lnum - число (lval).

6. Пусть rnum должно быть числом (rval).

7. Возвратите результат применения операции вычитания в lnum и rnum

Сводка В случае добавления, если любой из операндов, когда он был преобразован в примитивное значение без каких-либо намеков, внезапно становится строкой, второй преобразуется в строку тоже , В случае вычитания оба операнда преобразуются в число.

0
задан Patrickw99 13 July 2018 в 22:10
поделиться

1 ответ

Неясно, как выглядит ваш 4-й лист. Это будет искать номер билета на вашем 4-м листе в ячейке A1.

После выполнения он будет проходить через каждый лист и фильтровать / копировать / вставлять первые 4 столбца для всех значений в фильтре.

Вам нужно будет изменить .Sheets("Sheet4") в соответствии с вашим листом: .Sheets("?")

Option Explicit

Sub Macro1()
Dim Ws As Worksheet, MyWs As Worksheet
Dim wsLRow As Long, MyLRow As Long

Set MyWs = ThisWorkbook.Sheets("Sheet4")

Dim TicketNumber As String
TicketNumber = MyWs.Range("A1")

Application.ScreenUpdating = False
For Each Ws In Worksheets
    If Ws.Name <> MyWs.Name Then
        With Ws
            If .AutoFilterMode Then .AutoFilterMode = False
            wsLRow = .Range("A" & .Rows.Count).End(xlUp).Row
            MyLRow = MyWs.Range("A" & MyWs.Rows.Count).End(xlUp).Offset(1).Row
            .Range("A:A").AutoFilter 1, TicketNumber
            .Range("A2:D" & wsLRow).SpecialCells(xlCellTypeVisible).Copy
            MyWs.Range("A" & MyLRow).PasteSpecial
            .AutoFilterMode = False
        End With
    End If
Next Ws
Application.ScreenUpdating = True

End Sub

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

1
ответ дан Profex 17 August 2018 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: