Excel一次工作一行,合并数字而不添加

Excel一次工作一行,合并数字而不添加,excel,vba,Excel,Vba,我是VB新手,我在这方面遇到了麻烦 我有一个excel文档,包含30个不同的表,每个表包含1000多行数据 在每一张纸上,我想读一读是否有数据在A2、A3、A4、A5中通过末尾,如果此列有数据,则使用设置变量TC=20、cfg=10和&BCA=50填充AB2列,然后取数字并添加到末尾而不添加。与示例一样,忽略没有这些变量的行 例如: A2 contains TC9999 AB2 should say 209999 A

我是VB新手,我在这方面遇到了麻烦

我有一个excel文档,包含30个不同的表,每个表包含1000多行数据

在每一张纸上,我想读一读是否有数据在
A2、A3、A4、A5
中通过末尾,如果此列有数据,则使用设置变量
TC=20、cfg=10和&BCA=50
填充AB2列,然后取数字并添加到末尾而不添加。与示例一样,忽略没有这些变量的行

例如:

A2 contains TC9999  AB2 should say 209999                                       
A3 contains CFG8888 AB3 should say 108888                               
A4 contains BCA11   AB4 should say 500011                                      

谢谢

尝试一下,我想你会明白剩下的问题。它可以做得更好,所以如果速度变慢和问题让我知道

Sub LookCodes()

Dim WS As Worksheet
Dim I As Long
Dim Result As String

For Each WS In Worksheets
    WS.Range("A2").Activate
    For I = 0 To WS.UsedRange.Rows.Count
        If IsEmpty(ActiveCell.Offset(I, 0)) = True Then
            Exit For
        Else
            If InStr(ActiveCell.Offset(I, 0).Value, "TC") > 0 Then
                    Result = "000000" + Right(ActiveCell.Offset(I, 0).Value, Len(ActiveCell.Offset(I, 0).Value) - 2)
                    Cells(I + 2, 28).Value = "20" & Right(Result, 4) ''Added for Comment
            ElseIf InStr(ActiveCell.Offset(I, 0).Value, "BCA") > 0 Then
                    Result = "000000" + Right(ActiveCell.Offset(I, 0).Value, Len(ActiveCell.Offset(I, 0).Value) - 3)
                    Cells(I + 2, 28).Value = "50" & Right(Result, 4) ''Added for Comment
            End If
        End If
    Next
Next

End Sub

你能更好地解释这一点吗,我知道你想在所有的工作表中循环并检查列,听起来你想对数据进行某种类型的翻译以得到你的示例。。。也许在交易前/交易后有一个样本行对不起,我试着发一张照片,但它不允许我,所以我重新编写了问题。如果3包含CFG888,A4包含BCA11,那么AB3将是108888 500011不,一次只保留一行。第3行是CFG888,所以ab3是108888,第4行是bca11,ab4是500011好的最后一个问题lol,如果3包含CFG888,b3包含bca11,那么ab3是108888 500011为什么
I+2
单元格(I+2,…)
的左侧?同时,这也要求在某个地方使用ActiveCell的
来清理repeats.I+2,因为您正在启动一个单元格A2,其中I是当前行。当它通过第三行时,I=1,因此您需要再添加2个,否则您将失去同步。你可以从A1开始,让我从2开始,去掉这个。你可以用一个我从来没有用过的“with”来试试,但这是我的风格,除了少打字之外没有任何成本/收益。就像我说的那样,我会把整个专栏放在一个变量中,关闭屏幕更新和其他一些事情,但我一直保持简单。啊,现在我明白了。我猜
ActiveCell.Offset(I,27)
也能让你达到目的,而不是同时使用
Cells
ActiveCell
。我也没有将
一起使用,但在空间有限的地方,它可以很好地清理东西。或者在那些长的上面继续一行,这样就不需要水平滚动。是的,我同意,我主要是想帮助这里的人尽快得到正确的答案,如果他们需要“更好”,那是另一个问题,也许是另一个问题,而且你永远不知道老板什么时候会在同一个脚本上再问一个问题。如何使最终结果始终具有6位数字?所以在这个例子中,A4是BCA11,脚本是5011,我需要把它改成500011?但如果是BCA1125,那就只有501125了。