3

我在 Excel 工作表中有一长串数据,我将把文件 ID 更改为名称。问题是我需要先检查同一个文件名是否有不同的ID,因为这会产生问题。

因此,对于列 file_id 和列 File_name,我需要帮助编写一个公式来比较同一个文件名是否有两个或多个 ID。

这可能吗?

谢谢

在此处输入图像描述

4

3 回答 3

3

假设 A 列是 ID,B 列是名称 下面将检查每个名称是否有多个 ID。粘贴到单元格 C1 中并向下拖动。

=IF(COUNTIFS(B:B,"<>"&B1,A:A,A1)>0,"MORE THAN ONE ID FOR THIS NAME","OK")

请注意,'COUNTIFS()' 函数仅适用于 excel 2007、2010。

如果您有旧版本的 Excel,则需要使用如下所示的数组公式:

=IF(SUM(IF(A:A=A1,IF(B:B<>B1,1,0),0))>0,"MORE THAN ONE ID FOR THIS NAME","OK")

要使其工作,您必须在输入公式时按 Ctrl+Shift+Enter。

于 2012-07-12T16:45:28.507 回答
2

如果您有多个 file_id 列,而 File_name 只有一列,并且 File_name 列中的条目是唯一的,那么这很简单:假设 A、B 和 C 列包含 file_id 信息,而 D 列包含 File_name。在 E 列中,您可以输入以下公式: =COUNTA(A2:C2)

这将计算 File_name 列左侧列中的 file_id 条目数。如果结果大于 1,则您知道存在多个 file_id。

于 2012-07-12T16:45:35.187 回答
2

这是我的尝试。这段代码要做的是标记那些 id 与以前的 ID 不匹配的文件名。看下面的图片:

快照

我已经尝试使用 VBA

按 ALT + F11 进入 VBA,在左侧栏中,您将看到“Project -VBA Project”,在此双击 Sheet1 下,或者您正在处理的工作表的名称。

VBA模式

粘贴代码

将以下代码粘贴到那里:

Sub mark()

    Dim rng As Range
    Dim row As Integer
    Dim id As Integer
    Dim name As String

    Set rng = Sheets("Sheet1").Range("$A$2")
    row = 0

    Do Until rng.Offset(row, 0) = ""

        id = rng.Offset(row, 0)
        name = rng.Offset(row, 1)

        Do While rng.Offset(row, 1) = name
            If rng.Offset(row, 0) <> id Then
                rng.Offset(row, 0).Interior.Color = 255
                rng.Offset(row, 1).Interior.Color = 255
            End If
            row = row + 1
        Loop

    Loop

End Sub

请记住以下几点

  1. 在我的代码中,工作表的名称是“ Sheet1 ”,如果工作表的名称是其他名称,则在代码中编辑以下行,如下所示

    Set rng = Sheets("Your sheet name").Range("$A$2")
    
  2. 在我的代码中,起始 Range(Cell) 已指定为A2,如果起始单元格是其他东西,例如D2,则编辑代码中的行如下

    Set rng = Sheets("Your sheet name").Range("$D$2")
    

如果您想对这些单元格做其他事情而不是标记它们,请随时发表评论。

于 2012-07-13T15:55:46.467 回答