gpt4 book ai didi

vba - 使用 VBA 格式化 Excel

转载 作者:行者123 更新时间:2023-12-04 21:39:38 28 4
gpt4 key购买 nike

在我工作的地方,我们会保留一份我们发现有损坏的车辆的 list 。这些损坏代码有几种变化,我想在 excel 中设置一个 VBA 脚本,以自动更改具有正确格式的单元格的内容,但我并没有真正使用 VBA 脚本,Excel 数据对象让我感到困惑

这里有几个我想要的例子

06071 – VBA Function – 06.07.1
031211 – VBA Function- 03.12.1(1)
0409237-VBA Function – 04.09.2(3,7)
040912 030713 –VBA Function – 04.09.1(2) 03.07.1(3) (some vehicles have multiple damages)

基本上任何长度超过 5 的数字都会将第 6 位的任何数字放在括号中,用逗号分隔。

我几乎可以用任何其他语言做到这一点,这只是我遇到的所有随机 Excel 问题。

我尝试什么似乎并不重要,我的代码在我取得任何进展之前就出现了错误
Dim test
test = Worksheets(“Sheet1”).Range(“A:A”).Value
Worksheets(“Sheet2”).Range(“B:B”).Value=test

我试图制作一个无论我如何调用它都无法正常工作的函数。如果我可以对这些数字进行基本格式化,我很可能会从那里弄清楚。

谢谢你们能给我的任何帮助

最佳答案

您可以使用 UDF(用户定义函数)执行此操作:将以下代码放入 VBA 中的新模块中:

Function ConvertIt(rng As Range) As String
Dim varStr As Variant
Dim strSource As String, strResult As String
Dim i As Integer

For Each varStr In Split(Trim(rng.Value), " ")
strSource = CStr(varStr)
strResult = strResult & _
Mid(strSource, 1, 2) & "." & _
Mid(strSource, 3, 2) & "." & _
Mid(strSource, 5, 1)
If Len(strSource) > 5 Then
strResult = strResult & "("
For i = 6 To Len(strSource)
strResult = strResult & Mid(strSource, i, 1) & ","
Next i
strResult = Left(strResult, Len(strResult) - 1) & ")"
End If
strResult = strResult & " "
Next
ConvertIt = Left(strResult, Len(strResult) - 1)
End Function

假设您的数据在工作表的 A 列中,请将此公式放入 B2: =ConvertIt(A2)并将其复制下来。完毕!

如果您想一次性转换单元格并替换源代码,请使用以下代码:
Sub ConvertAll()
Dim rng As Range
For Each rng In Range("A1:A100")
rng.Value = ConvertIt(rng)
Next
End Sub

关于vba - 使用 VBA 格式化 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19693680/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com