Find'n'replace具有唯一值的非空单元格

我有一个电子表格,其中每一行都是空白的,列A以P开头,或者列A以星号(旧文本文件)开头。 P的值在整个文件中必须是唯一的 – 可以是字母或数字,但带有P前缀。 我不想更改空格或星号单元格。

举个例子:

*** Block 1 *** P1 <some data> P1 <some data> P1A <some data> *** Block 2 *** P2 <some more data> P2 <some more data> 

需要成为像这样的东西:

 *** Block 1 *** P0001 <some data> P0002 <some data> P0003 <some data> *** Block 2 *** P0004 <some more data> P0005 <some more data> 

虽然我可以使用“查找”来匹配所有的P单元格,但我不知道是否有一种方法让“replace”插入一些独特的文本(或不断递增的数字)。 我怀疑我需要一些代码/macros。 谢谢。

作为不使用VBA的备用解决scheme,您可以执行以下操作:

  • Ctrl + H调出查找和replace
  • 点击选项展开并查看所有选项
  • find什么= p*
  • 假设<some data>列为B列,请设置Replace = ="P"&TEXT(COUNTA(INDIRECT("B1:B"&ROW())),"0000")
  • 在= Sheet
  • search= By Rows
  • 看在= Formulas
  • 火柴案应该是没有选中的
  • 匹配整个单元格的内容应该被检查
  • 点击全部replace
  • 假设您replace的数据在列A中,请select列A,然后复制 – >右键单击 – >粘贴特殊值 – >值

查找/replace对话应该是什么样子的屏幕截图:

在这里输入图像说明

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

尝试这个:

 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