查找&n;使用唯一值替换非空单元格

时间:2014-12-10 23:59:48

标签: excel

我有一个电子表格,其中每一行都是空白的,列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单元格,但我不知道是否有一种方法可以使“替换”插入一些独特的文本(或不断递增的数字)。我怀疑我需要一些代码/宏。感谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:1)

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

  • Ctrl + H 以显示“查找和替换”
  • 点击选项以展开并查看所有选项
  • 找到= p*
  • 假设<some data>列是B列,请将替换为= ="P"&TEXT(COUNTA(INDIRECT("B1:B"&ROW())),"0000")
  • 内= Sheet
  • 搜索= By Rows
  • 查看= Formulas
  • 匹配案例应取消选中
  • 匹配整个单元格内容应选中
  • 点击全部替换
  • 假设您更换的数据位于A列, 选择列A,然后复制 - &gt;右键单击 - &gt;粘贴特殊 - &gt; 值

查找/替换对话框应如下所示的屏幕截图:

enter image description here

请记住将A列变为值的最后一步。