所以我有workbook1(wbThis)和workbook2(wbTarget),在wbThis'表格中我有一些填充的单元格。这些单元格的格式为:
来自A6
P2123:开始程序
A7
P1234:代码
A8
P4456-6:文件
|
V
(向下箭头)
A27
它继续这样。现在我有2个问题。
问题1 我想将PXXXxX:
(小x就像 - 或_或>等等的任意求和)代码复制到wbTarget。正如您所见,此代码会有所不同,但总是在开头是“P”,在结尾处是“:”。关于这一点,我尝试了代码:
Dim wbThis As Workbook
Dim wbTarget As Workbook
Dim rowRng As Integer
Dim targetRowRng As Integer
For rowRng 6 To 27
For targetRowRng 14 To 35
If Left((A:rowRng).Value,1) = "P" Then
wbThis.Sheets("Sheet1").Range(A:rowRng).Copy
wbTarget.Sheets("Sheet1").Range(E:targetRowRng).PasteSpecial
End If
Next
Next
然而,正如您可能已经注意到的那样,我没有编写代码,我希望它以“:”结束并复制其中的所有内容(包括“P”但不包括“:”)..我不知道如何编码,我希望得到你的帮助。
由于PXXXxX的长度不同 - 例如:
If Left((A:rowRng).Value,1) = "P" Then
If Left((A:rowRng).Value,5) = ":" Then
不幸的是,无法运作。
问题2 现在没有办法确定wb这个范围A6
- >的所有单元格。每次有新文档时都会填充A27
,因为我不想要不必要的复制/粘贴,我希望脚本停止复制/粘贴PXXXxX:如果脚本没有找到P in {{{ 1}}。 (如果没有P,则没有PXXXxX,然后单元格将为空,因此是多余的 - 同样适用于同一列中其下的所有单元格)
我想你可以使用else将其编码到上面的If语句中:
A16
虽然看起来并不正确,但我对此并没有太多了解。
答案 0 :(得分:1)
尝试使用此代码。根据需要更改对象名称。这将遍历每个单元格直到A27,检查“P ...:”组合。
Sub Test()
Dim wbThis As Workbook
Dim wbTarget As Workbook
Set wbThis = Workbooks("Workbook1.xlsx") 'change as needed
Set wbTarget = Workbooks("Workbook2.xlsx") 'change as needed
Dim wsThis As Worksheet
Dim wsTarget As Worksheet
Set wsThis = wbThis.Sheets("Sheet1")
Set wsTarget = wbTarget.Sheets("Sheet1")
Dim rowRng As Integer
Dim targetRowRange As Integer
targetRowRange = 14
For rowRng = 6 To 27
With wsThis
If Left(.Cells(rowRng, 1), 1) = "P" Then
Dim iPos As Integer
iPos = InStr(1, .Cells(rowRng, 1), ":")
wsTarget.Cells(targetRowRange, 5).Value = Left(.Cells(rowRng, 1), iPos - 1)
targetRowRange = targetRowRange + 1
End If
End With
Next
End Sub
答案 1 :(得分:0)
将
If Right((A:rowRng).Value,1) = ":" Then
你想要什么?或者,一种解决方案可能是用"",例如
替换字符Replace (Replace ( your_string, "P", ""), ":","")