【发布时间】:2022-01-27 07:15:09
【问题描述】:
我需要您的帮助来构建一个宏,该宏可以从字符串中提取日期(文本格式)并在不同的列中报告它们 - 假设是 K 列,您能帮忙吗?
数据库下面的文字
合同
OESX BLT 100 Feb22 Mar22 4200 vs S 5 FESX Mar22 @4080
OESX P 100 Mar22 3050 与 6 FESX Mar22 @4080
OESX CDIA 100 Feb22 4300 Mar22 4400 vs B 3 FESX Mar22 @4090
OESX CNV 100 Dec23 4100 vs 100 FESX Mar22 @4100
OESX PBUT 2 月 22 日 3900 - 4000 - 4100
数据库列的长度不是固定的,每次都在变化。
最终目标是将日期放在合同的开头而不是中间。
提前谢谢你:)
代码:
Sub Macro8()
Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant
Dim row
Dim column
Dim value
fndList = Array("Dec22 ", "Dec23 ")
rplcList = Array("", "")
Set sht = Sheets("Data")
****For Each cell In Range("A2:A40")
If InStr(cell.Text, fndList) > 0 Then
cell.Offset(0, 1).value = fndList
End If
Next cell****
For x = LBound(fndList) To UBound(fndList)
sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Next x
End Sub
【问题讨论】:
-
您是否尝试过从文本到列?无论哪种方式,请发布您的代码,以便我们确实可以为您提供帮助。
-
它不起作用,因为日期最终位于不同的单元格中,并且对齐它们比构建此宏更难。代码已在上面发布,我无法构建的关键部分是设置表行和带有 x 的 for 循环之间的部分。在我看来,向量 fndlist 应该包含数据库可以包含的所有日期。
-
如果您可以根据您的输入发布预期结果的屏幕截图,这将有所帮助。日期总是三个字母后跟两个数字吗?
-
B列中的结果应该是什么样子? -
感谢您的回答,结果应如下所示:Feb22 Mar22 Mar22 OESX BLT 100 4200 vs S 5 FESX @4080(现在是 OESX BLT 100 Feb22 Mar22 4200 vs S 5 FESX Mar22 @4080)同样:Feb22 OESX PBUT 3900 - 4000 - 4100(现在是 OESX PBUT Feb22 3900 - 4000 - 4100)
标签: excel vba database string date