Excel 查找';n';用唯一值替换非空单元格

Excel 查找';n';用唯一值替换非空单元格,excel,Excel,我有一个电子表格,其中每一行要么空白,要么列以p开头,要么列以星号开头(一个旧文本文件)。P的值在整个文件中必须是唯一的-可以是字母或数字,但带有P前缀。我不想改变空白或星号细胞。< /P> 例如: *** Block 1 *** P1 <some data> P1 <some data> P1A <some data> *** Block 2 *** P2 <some more data> P2 <some more data>

我有一个电子表格,其中每一行要么空白,要么列以p开头,要么列以星号开头(一个旧文本文件)。P的值在整个文件中必须是唯一的-可以是字母或数字,但带有P前缀。我不想改变空白或星号细胞。< /P> 例如:

*** Block 1 ***

P1 <some data>
P1 <some data>
P1A <some data>

*** Block 2 ***

P2 <some more data>
P2 <some more data>
***块1***
P1
P1
P1A
***第2区***
P2
P2
需要变成这样:

*** Block 1 ***

P0001 <some data>
P0002 <some data>
P0003 <some data>

*** Block 2 ***

P0004 <some more data>
P0005 <some more data>
***块1***
P0001
P0002
P0003
***第2区***
P0004
P0005
虽然我可以使用“Find”匹配所有的p单元格,但我不知道是否有办法让“replace”插入一些唯一的文本(或递增的数字)。我想我需要一些代码/宏。谢谢。

试试这个:

Sub FixTheP()
    Dim r As Range
    Dim N As Long, i As Long
    i = 1
    N = Cells(Rows.Count, "A").End(xlUp).Row
    For Each r In Range("A1:A" & N)
        If Left(r.Text, 1) = "P" Then
            r.Value = "P" & Format(i, "0000")
            i = i + 1
        End If
    Next r
End Sub

作为不使用VBA的替代解决方案,您可以执行以下操作:

  • 按Ctrl+H组合键调出“查找并替换”对话框
  • 单击“选项”展开并查看所有选项
  • 查找内容=
    p*
  • 假设
    列是B列,则将Replace设置为=
    =“P”和TEXT(COUNTA(间接(“B1:B”)和ROW()),“0000”)
  • 内=
    工作表
  • 按行搜索=
  • 查找=
    公式
  • 匹配大小写应未选中
  • 匹配整个单元格内容应选中
  • 单击“全部替换”
  • 假设您替换的数据在A列中, 选择列A,然后复制->右键单击->粘贴特殊-> 价值观
查找/替换对话框的屏幕截图:

请记住将列A转换为值的最后一步