С vb.net измените в excel некоторые значения ячеек с активированным методом фильтра - PullRequest
0 голосов
/ 27 апреля 2019

Я хочу просмотреть все видимые (не скрытые строки) и изменить данные в ячейке 4. Но важно то, что в некоторых ячейках данные уже существуют, и эти данные не должны изменяться и не учитываться во входных строках.,Таким образом, я отфильтровал все строки со значением 0,00 в ячейке 4, и теперь я хочу ввести из видимых строк 2-500 значение 70 в ячейке 4, а затем из 501 в 1251 значение 65 и из 1252 в последнее использованное значение строки 60К сожалению, я полностью потерялся.Пожалуйста, помогите

Dim numrows As Integer = oBook.Worksheets(1).UsedRange.Rows.Count()
Dim numrows2 As Integer = oBook.Worksheets(2).UsedRange.Rows.Count()
wsheet2 = oBook.Worksheets(2)
wsheet = oBook.Worksheets(1)

Dim currentRow As Long
oBook.Worksheets(1).Range("A11").AutoFilter(Field:=11, Criteria1:="=", VisibleDropDown:=False)

If wsheet.Rows().Hidden = False Then
    For currentRow = 2 To numrows Step 1
      If String.IsNullOrEmpty(wsheet2.Cells(currentRow, 11).Value) Then
         If currentRow >= 2 And currentRow <= 501 Then
            wsheet.Cells(currentRow, 11).value = "70"
         ElseIf currentRow >= 501 And currentRow <= 1251 Then
            wsheet.Cells(currentRow, 11).value = "65"
         ElseIf currentRow >= 1252 Then
            wsheet.Cells(currentRow, 11).value = "60"
         End If
      End If
    Next
End If

Дело в том, что из строки 2-500 есть 10 ячеек с вставленными данными «0,00», поэтому правильным вводом будет строка 510 со значением 70 и т. Д.Вот почему я скрыл 0,00 строки, но они все еще заполнены данными значениями 70, 65 и 60

enter image description here

1 Ответ

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

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

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

    Dim numrows As Integer = oBook.Worksheets(1).UsedRange.Rows.Count()
    wsheet = oBook.Worksheets(1)

    Dim currentRow As Long

Dim counter As Long
counter = 0

For currentRow = 2 To numrows Step 1
  If wsheet.Cells(currentRow, 11).Value Is Nothing Then
     counter += 1
     If counter >= 2 And counter <= 500 Then
        wsheet.Cells(currentRow, 11).value = "70"
     ElseIf counter >= 501 And counter <= 1251 Then
        wsheet.Cells(currentRow, 11).value = "65"
     ElseIf counter >= 1252 Then
        wsheet.Cells(currentRow, 11).value = "60"
     End If
  End If
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...