Excel精英培训网

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

[已解决]求选取单元格的左右段数字

[复制链接]
发表于 2016-6-6 12:19 | 显示全部楼层 |阅读模式
本帖最后由 excelpxfans001 于 2016-6-6 15:18 编辑

求选取单元格的左右段数字,见附件。
最佳答案
2016-6-6 15:59
。。。。。

提取左右段数据.zip

8.76 KB, 下载次数: 15

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-6-6 15:35 | 显示全部楼层
点中数据区域,会自动更新结果。

提取左右段数据.rar

18.66 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2016-6-6 15:44 | 显示全部楼层
本帖最后由 excelpxfans001 于 2016-6-6 15:51 编辑
grf1973 发表于 2016-6-6 15:35
点中数据区域,会自动更新结果。

你好老师,谢谢!
1.不用自动的。用选取单元格后,运行代码的方式。
2.提取的结果是针对选取的那个单元格数字的左右,不是上一个数字的左右。
回复

使用道具 举报

发表于 2016-6-6 15:59 | 显示全部楼层    本楼为最佳答案   
。。。。。

提取左右段数据.rar

20.93 KB, 下载次数: 11

回复

使用道具 举报

发表于 2016-6-6 16:03 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Value <> "" And Target.Offset(-1, 0) <> "" Then
    Range("ao1") = Target.Address
    ReDim ar(0 To 9, 1 To 2)
    ReDim br(1 To 5, 1 To 1)
    t = 0
    For i = 0 To 4
        sb = (i + Target.Offset(-1, 0).Value) Mod 10
        br(i + 1, 1) = sb
        sa2 = (i + Target.Value) Mod 10
        ar(sa2, 2) = sa2
        sa1 = (Target.Value + 9 - i) Mod 10
        ar(sa1, 1) = sa1
        If sb = Target.Value Then t = 1
    Next
    If t = 1 Then
        s = -1: n = -1
        For j = 0 To 9
            If ar(j, 1) <> "" Then s = s + 1: ar(s, 1) = ar(j, 1)
            If ar(j, 2) <> "" Then n = n + 1: ar(n, 2) = ar(j, 2)
        Next
        Range("aq1").Resize(5, 2) = ar
    End If
End If
End Sub
试试这个哈
回复

使用道具 举报

 楼主| 发表于 2016-6-6 16:04 | 显示全部楼层
grf1973 发表于 2016-6-6 15:59
。。。。。

非常感谢老师的解答。

如果只单求任选取单元格的右边数据。是不是代码会简单些。
回复

使用道具 举报

发表于 2016-6-6 16:18 | 显示全部楼层
测试一下
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     If Target.Count = 1 Then
  3.         If Application.IsNumber(Target) And Application.IsNumber(Target(0, 1)) Then
  4.             s = "012345678901234567"
  5.             s0 = Mid(s, InStr(s, Target(0, 1)), 5)
  6.             If InStr(s0, Target) Then x = 44: y = 43 Else x = 43: y = 44
  7.             
  8.             For i = 1 To 5
  9.                 Cells(i, x) = Mid(Mid(s, InStr(s, Target), 5), i, 1)
  10.                 Cells(i, y) = Mid(Mid(s, InStr(6, s, Target) - 5, 5), i, 1)
  11.             Next
  12.         End If
  13.    
  14.     End If
  15. End Sub
复制代码
提取左右段数据.rar (16.7 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2016-6-6 16:31 | 显示全部楼层
雪舞子 发表于 2016-6-6 16:18
测试一下

对的,谢谢老师。但不要自动的,选取单元格,然后运行代码。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 17:20 , Processed in 0.292582 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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