1

У меня есть данные в libreoffice, как

ColumnA ColumnB
504231  504109
504109  504201
504201  
504299

как много данных, то я хочу вывод, как

ColumnA ColumnB
504231  
504109  504109
504201  504201
504299 

Я пытался =IF(COUNTIF($B$1:$B$3;A1)>0;A1;"") эта формула работает при сравнении строк. Я пробовал в подобном, но не получаю результат

Как добиться этого результата, пожалуйста, дайте мне знать

2 ответа2

0

Этот VBa делает то, что вы хотите ...

Sub Button1_Click()

Dim numberOfRows As Integer
numberOfRows = 10            'Update this number from 10 to the number of rows you are using

   For rowNumberB = 1 To numberOfRows
        Dim cellToCheck As String
        valueToCheck = Range("B" & rowNumberB).Value ' get the value from B column
        For rowNumberA = 1 To numberOfRows
            If Range("A" & rowNumberA).Value = valueToCheck Then
                Range("C" & rowNumberA).Value = valueToCheck 'assign the new value to col C on the correct row (has to be on C otherwise we could over write existing values in B
                Range("B" & rowNumberB).Value = "" 'delete the original value from col B
            End If
        Next
    Next

    'Now we have to move everything from col C to B
    For rowNumberC = 1 To numberOfRows
        Range("B" & rowNumberC).Value = Range("C" & rowNumberC).Value ' copy from C to B
        Range("C" & rowNumberC).Value = "" ' Delete the value from C
    Next

End Sub

Вы не упомянули, что произойдет, если элементы в столбце B появятся до или после значения в столбце A, а также что делать с дубликатами в любом из столбцов. Ну, код выше разрешит все это. Смотрите скриншоты ниже.

До

После

0

На этот вопрос сам отвечающий ответил в своем следующем вопросе:

=IF(ISNA(VLOOKUP($A2,$B$2:$B$5,1,0)),"",VLOOKUP($A2,$B$2:$B$5,1,0))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .