找回密码
 注册
广告投放 虚位以待【阿里云】2核2G云新老同享 99元/年,续费同价做网站就用糖果主机-sugarhosts.comJtti.com-新加坡服务器,美国服务器,香港服务器
查看: 159|回复: 0

Excel:按条件拆分两个单元格中数字

[复制链接]
发表于 2010 年 10 月 6 日 20:32:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×

有朋友要求Excel工作表的A1单元格和B1单元格中有两个数字,这两个数字有一部分相同,现在要找出其中相同的数字并写入单元格C1,找出A1中有而B1中没有的数字并写入单元格D1,找出B1中有而A1中没有的数字并写入单元格E1。  如下面的工作表图片:
  

                               
登录/注册后可看大图
  不知道给出的数字是否都是按这样的规律,即第一个原始数据的后面几位数与第二个原始数据的前面几位数相同。假设是这个规律的话,则可以就这个具体的例子给出下面的代码来实现:
Sub SeparateNumber()
    Dim strFirst As String
    Dim strResult As String
    Dim StartNum As Integer
    Dim EndNum As String
    Dim i As Integer, j As Integer
    strFirst = Left(Range(”B1″), 1)
    StartNum = InStr(1, Range(”A1″), strFirst)
    j = 1
    For i = StartNum To Len(Range(”A1″))
        EndNum = Mid(Range(”A1″), i, 1)
        If EndNum = Left(Range(”B1″), j) Then
            j = j + 1
        End If
    Next i
    If j > 1 Then
        strResult = Mid(Range(”A1″), StartNum, i - 1)
    End If
    ‘单元格C1中的数据
    Range(”C1″).Value = strResult
    ‘单元格D1中的数据
    Range(”D1″).Value = Left(Range(”A1″), StartNum - 1)
    ‘单元格E1中的数据
    Range(”E1″).Value = Right(Range(”B1″), Len(Range(”B1″)) - j)
End Sub
  代码很简单,只是运用了几个VBA函数。
  讨论:
  其实代码可以进一步简化,由于VBA还有一个数组函数(Split函数)。 假设要将其变为通用的,则可将上述代码转化为自定义函数,并用相对量代替代码中的硬编码。 两个单元格中的数字假设不是按上面提到的规律,则可能两个单元格中的数字中间部分相同,而其它部分不同;或者一个单元格中的数字结尾部分和另一个单元格中的数字的中间部分相同;等等。
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2025 年 2 月 2 日 20:53 , Processed in 0.032511 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表