excel - 把一个函数变成一个子进程——STUCK
问题描述
列“P”(“P6:P3000”)保存一个值,如“EMPLOYEE_CONTRACT_STATUS_Closed”。我正在尝试将“已关闭”(也可能是“打开”)部分从单元格中拉出到“Q”列中,或者只是用分隔符(“_”)之后的最后一个文本替换现有的“P”列值。 ..“EMPLOYEE_CONTRACT_STATUS_Closed”->“关闭”或“打开”。这将创建以下步骤:
- 创建新列 Q
- 在列标题中插入新值
- 在“P”中执行函数以替换值或转储到“Q”列(“Q6:Q3000”)
下面我有到目前为止的内容-> 创建列并调用函数代码以在最后一个分隔符之后提取最后一个文本...这是自动化过程的一部分,因此目标不是触摸或操作任何的单元格值。我知道子进程可能会执行此操作,但我无法弄清楚并一直摸不着头脑。这是我第一次上论坛,有人提供固定代码但也解释它背后的语法会很棒,因为我对 VBA 非常有经验,但从未遇到过这个过程。谢谢^_^
& 2. 创建新列并更改标题名称:
Sub ContractStatus_Change() Application.ScreenUpdating = False Workbooks("DIV_EIB_Tool.xlsm").Worksheets("EIBMaintainEmployeeContractsW31").Range("Q5") _ .EntireColumn.Insert , CopyOrigin:=xlFormatFromLeftOrAbove Worksheets("EIBMaintainEmployeeContractsW31").Range("Q5").Value = "Contract Status" Worksheets("EIBMaintainEmployeeContractsW31").Range("Q6:Q3000").NumberFormat = "General" Application.ScreenUpdating = True End Sub
我从披露的价值中提取最后一个文本的功能:
Function RightWord(r As Range) As Variant Dim s As String s = Trim(r.Value) RightWord = Mid(s, InStrRev(s, "_") + 1) End Function
我还没有遇到错误,只是不知道如何把它拼凑起来,假设我可能可以通过一个子进程运行这一切,但我有一个巨大的大脑放屁。
解决方案
试试这个代码
Sub Test()
Dim a, i&
With Worksheets("EIBMaintainEmployeeContractsW31")
.Columns("Q").Insert
a = .Range("P6:P" & .Cells(Rows.Count, "P").End(xlUp).Row).Resize(, 2).Value
For i = LBound(a) To UBound(a)
If InStr(a(i, 1), "_") Then
a(i, 2) = Split(a(i, 1), "_")(UBound(Split(a(i, 1), "_")))
End If
Next i
With .Range("Q5")
.Value = "Contract Status"
.Offset(1, -1).Resize(UBound(a, 1), UBound(a, 2)).Value = a
End With
End With
End Sub
我通过处理工作表来开始代码,EIBMaintainEmployeeContractsW31
你With
会End With
注意到一些行以点开头,它指的是这个工作表。然后在 Q 列之前插入一列并将所需的范围从 P6 到 P 和最后一行存储到一个数组中(数组更快)然后循环包含两列的数组(一列用于原始数据,另一列用于所需的输出)。使用函数确保存在下划线,InSstr
然后如果存在,则根据下划线将拆分输出的最后一部分存储到第二列中。最后将数组填充到工作表中。希望解释对你有帮助。
推荐阅读
- vb.net - Microsoft.WinForms.ReportViewer 中的高级 SSRS 报告功能
- python - 分析这些数据时我哪里出错了?
- python - 取消嵌套/分解包含不均匀子列表的列表/元组
- selenium - 将 Selenium 与 Chrome 87 和 xvfb 一起使用会导致屏幕弯曲
- html - Webp 图像未在 iphone 的 chrome、safari 和 firefox 上加载
- mongodb - 如何优化 Percona MongoDB LDAP 以获得更多并发连接?
- javascript - 自定义 Vue 组件上的 v-model 不会更改输入值
- sql - SQL:当我的初始 table.field = NULL 时,我有没有办法调用另一个 table.field?
- django-views - 在表单和视图之间传递对象
- python - 逐步简化 (x,y) 坐标列表中的直线运动