如何创建宏来获得多重价值?

时间:2015-02-20 06:51:02

标签: excel vba

我是excel vba的初学者我有一个巨大的列表,其中一个列中的名字和姓氏没有任何空格或符号,一些名称是大写字母,一些没有大写字母,它们是相同的列可以在他们之间创造空间的可能的宏......或者任何可能的方式......

提前感谢....

2 个答案:

答案 0 :(得分:1)

假设您知道名字,那么使用公式的简单示例:

      A               B
 1    AmandaWinslet   = "Amanda" & " " & RIGHT(A1, LEN(A1) - LEN("Amanda"))) // result is Amanda Winslet

VBA的做法是:

Sub AddSpace()
    Range("A1") = "Amanda" & " " & VBA.Right$(Range("A1"), Len(Range("A1")) - Len("Amanda"))
End Sub

您需要在VBA中循环遍历列表并使FirstName成为变量。你的帖子假设你有某个地方的名字

答案 1 :(得分:1)

不可靠,但会以简单的名字告诉你。选择名称范围并运行宏。

Sub InsertSpacesInNames()
Dim pos As Long: pos = 0
Dim uc As Long: uc = 0
For Each cell In Selection
For i = 1 To Len(cell.Value)
If Asc((Mid(cell.Value, i, 1))) >= 65 And Asc((Mid(cell.Value, i, 1))) <= 90 Then
uc = uc + 1
pos = i
End If
Next i
If uc = 2 Then
cell.Value = Mid(cell.Value, 1, pos - 1) & " " & Mid(cell.Value, pos, Len(cell.Value))
End If
uc = 0
pos = 0
Next
End Sub

我的输出:

enter image description here

当且仅当

时,此宏才能正常工作
  1. 你使用简单的名字(没有复合名称,如 Jean-PierreLeCosteau ,其中所需的输出是 Jean-Pierre LeCosteau
  2. 全名只有两个大写字母。