我在 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;"")
这个公式在比较字符串时有效。我尝试过类似方法,但没有得到结果
如何实现这个输出请告诉我
答案1
这个 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 列中的值之前或之后会发生什么,也没有提到如何处理任一列中的重复项。好吧,上面的代码将解决所有这些问题。请参阅下面的屏幕截图。
前
后
答案2
提问者自己在他的下一个问题:
=IF(ISNA(VLOOKUP($A2,$B$2:$B$5,1,0)),"",VLOOKUP($A2,$B$2:$B$5,1,0))