Excel精英培训网

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

[已解决]提取数据

[复制链接]
发表于 2016-6-10 13:33 | 显示全部楼层 |阅读模式
提取数据,见附件
最佳答案
2016-6-10 15:29
你老是一个问题问两边啊
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim arr(0 To 4), brr(0 To 4)
  3.     If Target.Count > 1 Then Exit Sub
  4.     If Target.Row < 7 Or Target.Row > 20 Then Exit Sub
  5.     If Target.Column < 2 Or Target.Column > 18 Then Exit Sub
  6.     For i = 0 To 4
  7.         If Target.Value + i > 9 Then
  8.             arr(i) = Target.Value + i - 10
  9.         Else
  10.             arr(i) = Target.Value + i
  11.         End If
  12.         If Target.Value - i - 1 < 0 Then
  13.             brr(i) = Target.Value - i + 9
  14.         Else
  15.             brr(i) = Target.Value - i - 1
  16.         End If
  17.     Next
  18.     Sheet1.[ar1:ar5] = Application.WorksheetFunction.Transpose(brr)
  19.     Sheet1.[aq1:aq5] = Application.WorksheetFunction.Transpose(arr)
  20. End Sub
复制代码

取右边数据.rar

15.71 KB, 下载次数: 13

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-6-10 15:29 | 显示全部楼层    本楼为最佳答案   
你老是一个问题问两边啊
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim arr(0 To 4), brr(0 To 4)
  3.     If Target.Count > 1 Then Exit Sub
  4.     If Target.Row < 7 Or Target.Row > 20 Then Exit Sub
  5.     If Target.Column < 2 Or Target.Column > 18 Then Exit Sub
  6.     For i = 0 To 4
  7.         If Target.Value + i > 9 Then
  8.             arr(i) = Target.Value + i - 10
  9.         Else
  10.             arr(i) = Target.Value + i
  11.         End If
  12.         If Target.Value - i - 1 < 0 Then
  13.             brr(i) = Target.Value - i + 9
  14.         Else
  15.             brr(i) = Target.Value - i - 1
  16.         End If
  17.     Next
  18.     Sheet1.[ar1:ar5] = Application.WorksheetFunction.Transpose(brr)
  19.     Sheet1.[aq1:aq5] = Application.WorksheetFunction.Transpose(arr)
  20. End Sub
复制代码
回复

使用道具 举报

发表于 2016-6-10 16:09 | 显示全部楼层
本帖最后由 文刀天可 于 2016-6-10 16:12 编辑

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, [b2:ad100]) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target.Value >= 0 And Target.Value <= 9 Then
       Call 生成(Target)
    End If
End Sub



Sub 生成(ByVal Target As Range)
     Dim arr(), i%, j%, k%, brr(1 To 10)
     arr = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
     For i = 1 To 10
         If arr(i - 1) = Target.Value Then
            For j = 1 To 10
               brr(j) = (i - 2 + j) Mod 10
            Next
         End If
     Next
     For k = 1 To 10
         If k <= 5 Then
            Range("aq" & k) = brr(k)
         Else
            Range("ar" & k - 5) = brr(k)
         End If
    Next
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 19:32 , Processed in 0.323888 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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