Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2269|回复: 9

[已解决]求把数拆分开

[复制链接]
发表于 2012-1-21 12:23 | 显示全部楼层 |阅读模式
Book2.rar (3.04 KB, 下载次数: 25)
发表于 2012-1-21 12:48 | 显示全部楼层
看了后有个问题,就是如果是5-9的9时,15-9=6,而再五位是67890还是67891呢?
回复

使用道具 举报

发表于 2012-1-21 12:52 | 显示全部楼层
  1. =TEXT(LEFT(B12,1),"[<5]"&RIGHT(10-LEFT(B13,1),1)&RIGHT(10-LEFT(B13,1)+1,1)&RIGHT(10-LEFT(B13,1)+2,1)&RIGHT(10-LEFT(B13,1)+3,1)&RIGHT(10-LEFT(B13,1)+4,1))
复制代码
给出一个思路,可以显示23456,其它的自己改改吧
回复

使用道具 举报

发表于 2012-1-21 13:02 | 显示全部楼层
hjuy78 发表于 2012-1-21 13:00
是67890,按顺序算过去要5个数就是

这个用函数和VBA应该都能实现
回复

使用道具 举报

 楼主| 发表于 2012-1-21 13:00 | 显示全部楼层
wenchduan 发表于 2012-1-21 12:48
看了后有个问题,就是如果是5-9的9时,15-9=6,而再五位是67890还是67891呢?

是67890,按顺序算过去要5个数就是
回复

使用道具 举报

发表于 2012-1-21 13:37 | 显示全部楼层    本楼为最佳答案   

  1. Sub test()
  2.     Dim A, i%, j%, k%, x$, y$
  3.     A = [b12:bj20]
  4.     For j = 1 To UBound(A, 2)       '遍历列
  5.         For i = 7 To 9              '遍历18,19,20行
  6.             Select Case Mid(A(1, j), i - 6, 1)
  7.             Case 0 To 4
  8.                 x = 10
  9.             Case 5 To 9
  10.                 x = 15
  11.             End Select
  12.             x = Right(CStr(x - Mid(A(2, j), i - 6, 1)), 1)
  13.             A(i, j) = x
  14.             For k = x + 1 To x + 4
  15.                 If k > 9 Then
  16.                     y = Right(CStr(k), 1)
  17.                 Else
  18.                     y = k
  19.                 End If
  20.                 A(i, j) = A(i, j) & y
  21.             Next k
  22.             x = "": y = ""
  23.         Next i
  24.     Next j
  25.     Range("b18:bj20").NumberFormat = "@"
  26.     [B12].Resize(9, UBound(A, 2)) = A
  27. End Sub
复制代码
Book2b.rar (10.84 KB, 下载次数: 19)
回复

使用道具 举报

发表于 2012-1-21 13:40 | 显示全部楼层
本帖最后由 hrpotter 于 2012-1-21 13:49 编辑

B18=IF(MID(B$12,ROW(A1),1)-4>0,MID("01234567890123",FIND(RIGHT(15-MID(B$13,ROW(A1),1)),"01234567890123"),5),MID("01234567890123",FIND(RIGHT(10-MID(B$13,ROW(A1),1)),"01234567890123"),5))
下拉,右拉 Book2.rar (9.4 KB, 下载次数: 3)
回复

使用道具 举报

 楼主| 发表于 2012-1-21 13:43 | 显示全部楼层
爱疯 发表于 2012-1-21 13:37
这样吗

是谢谢了,遇见你真好,再次感谢
回复

使用道具 举报

发表于 2012-1-21 14:48 | 显示全部楼层
hrpotter 发表于 2012-1-21 13:40
B18=IF(MID(B$12,ROW(A1),1)-4>0,MID("01234567890123",FIND(RIGHT(15-MID(B$13,ROW(A1),1)),"012345678901 ...

l楼上好长的数组公式……182字符


看我的,103字符:
=RIGHT(0&SUM(MOD(INT(MID(B$12,ROW(B1),1)/5)*5+10-MID(B$13,ROW(B1),1)+{0,1,2,3,4},10)*10^{4,3,2,1,0}),5)
回复

使用道具 举报

发表于 2012-1-21 15:43 | 显示全部楼层
比6楼最佳答案看上去要简洁一些的宏代码:
  1. Sub test1()
  2.     cl = [b12].End(2).Column - 1
  3.     arr = [b12].Resize(2, cl)
  4.     brr = [b18].Resize(3, cl)
  5.    
  6.     For j = 1 To cl
  7.         For i = 1 To 3
  8.             t = IIf(Mid(arr(1, j), i, 1) < 5, 9, 14) - Mid(arr(2, j), i, 1)
  9.             s = "'"
  10.             For k = 1 To 5
  11.                 t = (t + 1) Mod 10
  12.                 s = s & t
  13.             Next
  14.             brr(i, j) = s
  15.         Next
  16.     Next
  17.     [b45].Resize(3, cl) = brr '此处输出位置自己修改。
  18. End Sub
复制代码

评分

参与人数 1 +60 金币 +30 收起 理由
爱疯 + 60 + 30 群子老师的好多了,以后多来纠正下呀

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 03:51 , Processed in 0.413392 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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