Заменить значения в строках после определенного GAP номеров строк - PullRequest
0 голосов
/ 08 июля 2019

Мне нужно заменить значение в определенной строке, которое повторяется после определенного количества строк.У меня есть несколько Excels, мне нужно это сделать.

Текущие данные:

7th row: IN
16th row: IN ( comes after 9 rows) 
25th row: IN ( comes after 9 rows)

Мне нужно заменить эти значения на OUT.

Я провел некоторое исследованиеи кажется, что я мог бы использовать макросы, но я не знаком с макросами.

Может ли кто-нибудь помочь с макросами с помощью цикла или предложить какие-либо другие идеи?

enter image description here

Ответы [ 4 ]

2 голосов
/ 08 июля 2019

Простая формула Excel может работать на лист, и, конечно, макрос может работать

Решение Excel, начиная с B2

=IF(AND($A1 = "IN",$A1 = $A2),"Out",$A2)

Эта формула будет копировать ваш исходный столбец, сисправить.тогда простое копирование и вставка в качестве значений столбца B в A должно работать

Решение VBA, для которого необходимо выбрать соответствующий столбец:

Sub fixOut()
 Dim cell As Object
 For Each cell In Selection
    If cell = "IN" AND cell = cell.OffSet(-1, 0) Then cell = "Out"
 Next cell
End Sub
1 голос
/ 08 июля 2019

Для Excel Office 365 создайте макрос в разделе «Просмотр» -> «Макрос» -> «Просмотр макросов» -> введите имя макроса и нажмите кнопку «Создать».

Должен появиться экран текстового редактора, макрос должен быть следующим:

Sub test_macro()
    Dim searching_string As String
    searching_string = "IN"
    replacing_string = "OUT"
    searching_column = "A"
    minimum_distance_to_be_modified = 3
    previous_found_row = -1
    row_number = 10000
    For i = 1 To row_number
        If Range(searching_column + CStr(i)).Value = searching_string Then
            If i - previous_found_row <= minimum_distance_to_be_modified And previous_found_row <> -1 Then
               Range(searching_column + CStr(i)).Value = replacing_string
            End If
            previous_found_row = i
         End If
    Next
End Sub

Установите searching_string, searching_column, minimum_distance_to_be_modified, replacing_string и все будет хорошо!

Я провел тест с настройками, которые вы найдете во фрагменте, и это было результатом:

enter image description here

Надеюсь, что это поможет вам.

0 голосов
/ 11 июля 2019

Вы можете попробовать:

Option Explicit

Sub test()

    Dim LastRow As Long, i As Long
    Dim arr As Variant

    'Change target worksheet if needed
    With ThisWorkbook.Worksheets("Sheet1")
        'Find the last row of column A
         LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
         'Set in arr the range with the data starting from row 1 to last row
         arr = .Range("A1:A" & LastRow)

         For i = LBound(arr) To UBound(arr) - 1
            'Check if the current and the next Arr(i) are both "IN"
            If arr(i, 1) = "IN" And arr(i + 1, 1) = "IN" Then
                'Set the next arr(i) to OUT
                arr(i + 1, 1) = "OUT"
            End If

         Next i
         'Print the values
         .Range("A1:A" & UBound(arr)).Value = arr

    End With

End Sub
0 голосов
/ 10 июля 2019

Я решил свою проблему с помощью макросов и кода VB.

 Sub Macro1()
'
' Macro1 Macro
'

Dim i As Integer
i = 7

Do While i <= Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 1).Value = "Out"
i = i + 9
Loop
End Sub

Добавьте этот код в новые макросы и запустите макросы, если у кого-то возникла проблема, аналогичная моей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...