首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择具有相似值的单元格,然后按时间顺序重命名文本

选择具有相似值的单元格,然后按时间顺序重命名文本
EN

Stack Overflow用户
提问于 2019-12-17 14:24:47
回答 2查看 68关注 0票数 1

我想自动重命名具有相同值的单元格。例如,在我选择的区域中,有3个单元格带有"stackoverflow“。所需的输出将是选择这些单元格,然后将文本更改为如下所示

stackoverflow_1 stackoverflow_2 stackoverflor_3

我已经完成了重命名部分,但我遇到的问题是如何在区域中选择相似的单元格。这是我到目前为止所拥有的。希望我能为此创建一个for循环或do while循环。

代码语言:javascript
运行
复制
Sub rename()
num = WorksheetFunction.CountA(Selection)

Do While num <> 0

With Selection
    .Cells(num, 1).Value = Selection.Cells(num, 1) & "_" & num
End With
num = num - 1
Loop
End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-17 14:52:36

这里有一种方法:

代码语言:javascript
运行
复制
Dim dict As Object, c As Range
Set dict = CreateObject("scripting.dictionary")
For Each c in Selection.Cells
    v = c.Value
    If Len(v) > 0 Then
        'Is count > 1 or was it >1 at some point? 
        If dict.Exists(v) Or Application.CountIf(Selection, v) > 1 Then
            dict(v) = dict(v) + 1
            c.Value = v & "_" & dict(v)
        End If   
    End If 
Next c
票数 2
EN

Stack Overflow用户

发布于 2019-12-17 14:50:21

除非您特别想使用VBA,否则不需要VBA。使用下面的公式

代码语言:javascript
运行
复制
=IF(AND(COUNTIF($A$1:A1,A1)=1,A1<>A2),A1,A1&COUNTIF($A$1:A1,A1))

确保数据已排序。

无需排序,您可以使用此公式(Courtsey @JvdV)

代码语言:javascript
运行
复制
=IF(COUNTIF($A$1:$A$17,A1)=1,A1,A1&"_"&COUNTIF($A$1:A1,A1))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59368645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档