Vba 用Excel文件中的单个值替换或重新编码多个不同的值

Vba 用Excel文件中的单个值替换或重新编码多个不同的值,vba,excel,replace,Vba,Excel,Replace,我有一个Excel工作表,其中包含数列数据。对于一个特定的列,我需要Excel将10到15之间的所有值替换为值1,将16到20之间的值替换为值2,以此类推 我知道如何做到这一点,为一个单一的价值;ie:我可以将值10替换为1,将值11替换为1,依此类推。但这将是一个乏味的练习。是否有一些代码行可以执行此任务 谢谢你的帮助 问候,, Ali这里有一个快速而肮脏的方法,必须根据您真正想要更改的值进行修改。这将11转换为15到1,16转换为20到2,以此类推 您可能希望在电子表格上放置一个按钮,然后右

我有一个Excel工作表,其中包含数列数据。对于一个特定的列,我需要Excel将10到15之间的所有值替换为值1,将16到20之间的值替换为值2,以此类推

我知道如何做到这一点,为一个单一的价值;ie:我可以将值10替换为1,将值11替换为1,依此类推。但这将是一个乏味的练习。是否有一些代码行可以执行此任务

谢谢你的帮助

问候,,
Ali

这里有一个快速而肮脏的方法,必须根据您真正想要更改的值进行修改。这将11转换为15到1,16转换为20到2,以此类推

您可能希望在电子表格上放置一个按钮,然后右键单击并选择“查看代码”。然后在Sub和End Sub语句之间输入以下内容。“RangetoChange”是一个命名范围的名称,也可以放入范围本身,如“A1:A100”。一旦全部输入完毕,您就可以退出设计模式(即您输入以放置按钮),然后单击按钮。确保将公式更改为您真正想要的结果

Dim A() As Variant
Dim i As Integer

A = Range("RangetoChange")
For i = 1 To (UBound(A) - LBound(A) + 1)
    A(i, 1) = (A(i, 1) \ 5) - 1
Next i
Range("RangetoChange") = A

如果不需要使用宏自动执行或经常重复,可以在电子表格上快速执行

  • 在要更改的列的右侧插入新列。假设该列是A,您刚刚创建了一个新列B
  • 在单元格B1中输入公式
    =INT(A1/5)-1
  • 将此公式复制到B列的所有单元格,以确定A列单元格的范围
  • 复制B列中的单元格并使用右键单击“粘贴特殊…”值粘贴到A列,然后单击“确定”
  • 删除B列(这是临时/工作列)

  • 这将用B列中的调整值替换A列中的值。继续任何其他列。

    @Ali在第一行之前放入
    Sub main()
    ,然后留下一个空行。在最后一行之后,将自动插入
    End Sub
    。这应该可以解决问题。您还需要将StackOverflow上的“RangeToChange”更改为您需要的实际范围(例如,如果您需要更改的是A列中的单元格,则为“A1:A100”)。在询问更多信息时,您希望为答案留下注释,而不是新答案。我将编辑barrowc在对我的回答的评论中提到的细节,以及其他一些要点。请删除您在下面输入的答案。