Как скрыть пустые строки в Excel с помощью выражения? - PullRequest
0 голосов
/ 07 июня 2018

у меня есть 2 листа (Лист1, Лист2) в Excel
Лист1

Лист1 имеет 2 столбца A, B и 6 строк с данными.

Sheet2
Sheet2 имеет 1 столбец A, ячейка A1 = if(sheet1!a1="ali", a1,"") та же формула в 6 строках путем увеличения номера строки, как в ExCel.формула работает хорошо, я хочу только значение, соответствующее выражению, а не пустые строки, как я показываю во фрагменте, как я могу это сделать?

table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

tr:nth-child(even) {
    background-color: #dddddd;
}
<table>
  <tr>
    <th>Sheet1!A</th>
    <th>Sheet!B</th>
    <th>Sheet2!C</th>
  </tr>
  <tr>
    <td>Ali</td>
    <td>100</td>
    <td>100</td>
  </tr>
  <tr>
    <td>Irfan</td>
    <td>500</td>
    <td><i>i don't want this</i></td>
  </tr>
  <tr>
    <td>Irfan</td>
    <td>500</td>
    <td><i>i don't want this</i></td>
  </tr>
  <tr>
    <td>Sufyan</td>
    <td>1000</td>
    <td><i>i don't want this</i></td>
  </tr>
  <tr>
    <td>Owais</td>
    <td>900</td>
    <td><i>i don't want this</i></td>
  </tr>
  <tr>
    <td>ali</td>
    <td>600</td>
    <td>600</td>
  </tr>
</table>

1 Ответ

0 голосов
/ 07 июня 2018

Почему бы не использовать автофильтр и копировать?Ваши данные должны быть настроены как таблица, которую вы можете сделать, выбрав заполненную ячейку и нажав Ctrl + T ;убедитесь, что у вас есть заголовки.

Option Explicit
Public Sub test()

    With Worksheets("Sheet1").ListObjects("Table1").Range
    .AutoFilter
    .AutoFilter Field:=1, Criteria1:="Ali"
    .Range("Table1").Copy Worksheets("Sheet2").Range("A1")
    End With

End Sub

Или при копировании в следующую доступную строку используйте:

Option Explicit
Public Sub test()
    Dim wsSource As Worksheet, wsTarget As Worksheet

    Set wsSource = ThisWorkbook.Worksheets("Sheet1") '<==Change name appropriately
    Set wsTarget = ThisWorkbook.Worksheets("Sheet2")
    With wsSource.ListObjects("Table1").Range    '<==Change table name appropriately
        .AutoFilter
        .AutoFilter Field:=1, Criteria1:="Ali"
        .Range("Table1").Copy wsTarget.Range("A" & wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row + 1)
    End With
End Sub

Данные (с заголовками) после фильтра и перед копированием:

data

...