可以使用VBA中的循环结构和条件判断语句来实现该功能。具体代码如下: ``` Sub CompareData() Dim i As Long Dim BCD, FGH '定义变量 For i = 1 To Range("B" & Rows.Count).End(xlUp).Row '遍历每一行数据 BCD = Join(Application.Transpose(Range("B" & i & ":D" & i)), ",") '将B、C、D列的数据组合成字符串 FGH = Join(Application.Transpose(Range("F" & i & ":H" & i)), ",") '将F、G、H列的数据组合成字符串 If SortString(BCD) = SortString(FGH) Then '如果两个字符串排序后相等,输出1;否则,输出0 Range("J" & i).Value = 1 Else Range("J" & i).Value = 0 End If Next i End Sub Function SortString(ByVal s As String) '定义字符串排序函数 Dim arr() As String Dim i As Integer arr = Split(s, ",") For i = LBound(arr) To UBound(arr) - 1 If arr(i) > arr(i + 1) Then temp = arr(i) arr(i) = arr(i + 1) arr(i + 1) = temp i = -1 End If Next i SortString = Join(arr, ",") End Function ``` 以上代码会从第1行开始遍历每一行数据,对于每一行数据,它将B、C、D列的数据和F、G、H列的数据分别组合成字符串,并对这两个字符串进行排序(通过调用`SortString()`函数),然后判断两个排序后的字符串是否相等。如果相等,则在J列输出1;否则,在J列输出0。 需要注意的是,在某些情况下可能会出现数据类型转换错误,因此代码中使用了`Join()`函数将每一行数据中的B、C、D列和F、G、H列的值组合成字符串。另外,为了避免顺序不同但值相等的问题,我们对这两个字符串进行了排序处理。同时,该函数仅针对当前Worksheet的第1行到最后一行进行数据比较。