Vba 在将字符串复制到新单元格时修剪字符串

Vba 在将字符串复制到新单元格时修剪字符串,vba,excel,Vba,Excel,我目前正在使用它从列中获取唯一值。我试图修改该唯一值,并在粘贴到目标之前删除字符 Dim Cl As Range With CreateObject("scripting.dictionary") For Each Cl In wbFrom.Sheets("Sheet0").Range("X9", Range("X" & Rows.Count).End(xlUp)) If Not .exists(Cl.Value) Then

我目前正在使用它从列中获取唯一值。我试图修改该唯一值,并在粘贴到目标之前删除字符

Dim Cl As Range

    With CreateObject("scripting.dictionary")
        For Each Cl In wbFrom.Sheets("Sheet0").Range("X9", Range("X" & Rows.Count).End(xlUp))
            If Not .exists(Cl.Value) Then
            .Add Cl.Value, Nothing
            'Cl.Value = Left(Cl, Len(Cl) - 5)
            End If
        Next Cl
        wbTo.Sheets("Sheet1").Range("F12").Resize(.Count).Value = Application.Transpose(.keys)
    End With
我不知道在哪里或如何实现这一行:
Cl.Value=Left(Cl,Len(Cl)-7)
或者这是否是最好的路线

源数据是“36个月”,我试图删除除数字本身以外的任何内容,结果只是将“36”粘贴到我的字段中。所有值均为“XX月”格式,且应始终为2位数字

编辑:我还注意到上面的代码被粘贴到单元格F13而不是F12中-你知道为什么粘贴前要添加一行吗?我怀疑“转置”方面,但看不到任何其他原因

未经测试:

For Each Cl In wbFrom.Sheets("Sheet0").Range("X9", Range("X" & Rows.Count).End(xlUp))
            v = Left(Cl, Len(Cl) - 5)
            If Not .exists(v) Then
                .Add v, Nothing
            End If
Next Cl
未经测试:

For Each Cl In wbFrom.Sheets("Sheet0").Range("X9", Range("X" & Rows.Count).End(xlUp))
            v = Left(Cl, Len(Cl) - 5)
            If Not .exists(v) Then
                .Add v, Nothing
            End If
Next Cl

这是一个解决方案,为那些与相同的问题,想张贴在这里

Dim Cl As Range
With CreateObject("scripting.dictionary")
    For Each Cl In wbFrom.Sheets("Sheet0").Range("X9", Range("X" & Rows.Count).End(xlUp))

        Cl.Value = Left$(Cl.Value, 2)  '<--- Magic spot

        If Not .exists(Cl.Value) Then
        .Add Cl.Value, Nothing
        End If
    Next Cl
    wbTo.Sheets("Sheet1").Range("D11").Resize(.Count).Value = Application.Transpose(.keys)
End With

这是一个解决方案,为那些与相同的问题,想张贴在这里

Dim Cl As Range
With CreateObject("scripting.dictionary")
    For Each Cl In wbFrom.Sheets("Sheet0").Range("X9", Range("X" & Rows.Count).End(xlUp))

        Cl.Value = Left$(Cl.Value, 2)  '<--- Magic spot

        If Not .exists(Cl.Value) Then
        .Add Cl.Value, Nothing
        End If
    Next Cl
    wbTo.Sheets("Sheet1").Range("D11").Resize(.Count).Value = Application.Transpose(.keys)
End With

如果它们都是两位数,那么我认为只要说
Cl.Value=Left$(Cl.Value,2)
就不会有任何问题。我想说,这主要取决于数据中有哪些不同的变化,这一切都取决于该范围内的其他值。你需要为我们提供更多细节。所有值是否遵循特定格式?如果是这样的话,它们是什么?我已经更新了我的帖子-但是是的,所有月份字段都将采用“XX月”格式,并且应该始终是2位数的月份金额,后跟空格和单词Months@Marcucciboy2-谢谢!当我找到合适的地方放的时候,它就起作用了。(她是这么说的!)如果它们都是两位数,那么我认为只要说
Cl.Value=Left$(Cl.Value,2)
就没有问题了。我想说,这主要取决于数据中有哪些不同的变化,这一切都取决于该范围内的其他值。你需要为我们提供更多细节。所有值是否遵循特定格式?如果是这样的话,它们是什么?我已经更新了我的帖子-但是是的,所有月份字段都将采用“XX月”格式,并且应该始终是2位数的月份金额,后跟空格和单词Months@Marcucciboy2-谢谢!当我找到合适的地方放的时候,它就起作用了。(她就是这么说的!)哦,那可能就是OP想要做的。我将删除我的答案。我得到了一个无效的过程调用或参数错误,
v=Left(Cl,Len(Cl)-5)
,即使在将其分配给Dim之后也是如此。噢,这可能是OP试图做的。我将删除我的答案。即使在将其分配给Dim后,我仍收到一个无效的过程调用或参数错误,错误为
v=Left(Cl,Len(Cl)-5)