Excel精英培训网

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

[已解决]求大佬 if q<>p 怎么调换位置

[复制链接]
发表于 2022-1-1 19:04 | 显示全部楼层 |阅读模式

185632305.jpg
  1. Sub 小合并A()
  2.     arr = Range("A2:A15") '指定区域------
  3.     brr = Range("B1", Range("B1").End(xlToRight)) '指定横向区域-N-个数
  4.     Dim jg(), q$, p$
  5.     ReDim jg(1 To UBound(arr), 1 To UBound(brr, 2))
  6.     Set d = CreateObject("scripting.dictionary")
  7.     Set reg = CreateObject("vbscript.regexp")
  8.     reg.Global = True
  9.     For i = 1 To UBound(arr)
  10.         reg.Pattern = "[A-Z]"
  11.         Set ma = reg.Execute(arr(i, 1))
  12.         a = ma.Count
  13.         For k = 0 To ma.Count - 1
  14.             d(k) = ma(k)
  15.         Next
  16.         reg.Pattern = Join(d.items, "|")
  17.         s = reg.Pattern
  18.         For j = 1 To UBound(brr, 2)
  19.             If reg.test(brr(1, j)) Then
  20.                
  21.                 q = Right(arr(i, 1), 7) '加上这段
  22.                 p = Right(brr(1, j), 7) '加上这段
  23.                 If q <> p Then '加上这段
  24.                 jg(i, j) = ""
  25.                 End If '加上这段,结果没变
  26.                
  27.             Else
  28.                 'q = Right(arr(i, 1), 7)
  29.                 'p = Right(brr(1, j), 7)
  30.                
  31.                 jg(i, j) = arr(i, 1) & "一" & brr(1, j)
  32.             End If
  33.         Next
  34.         d.RemoveAll
  35.         Set ma = Nothing
  36.     Next
  37.     Range("b2").Resize(UBound(arr), UBound(brr, 2)) = jg
  38. End Sub

复制代码
Right(arr(i, 1), 7)不等 Right(brr(1, j), 7)


数值是取后面7个字符


怎么调换位置
最佳答案
2022-1-1 20:36
本帖最后由 大灰狼1976 于 2022-1-1 20:37 编辑

根据你的代码,jg(i, j) = arr(i, 1) & "一" & brr(1, j)只在满足If reg.test(brr(1, j)) Then条件为否时才会发生,而你添加的代码是在If reg.test(brr(1, j)) Then条件为真里面,本来里面就没有jg(i, j) 的赋值语句,所以你的jg(i, j) = ""有和没有都一样。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2022-1-1 19:40 | 显示全部楼层
回复

使用道具 举报

发表于 2022-1-1 20:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 大灰狼1976 于 2022-1-1 20:37 编辑

根据你的代码,jg(i, j) = arr(i, 1) & "一" & brr(1, j)只在满足If reg.test(brr(1, j)) Then条件为否时才会发生,而你添加的代码是在If reg.test(brr(1, j)) Then条件为真里面,本来里面就没有jg(i, j) 的赋值语句,所以你的jg(i, j) = ""有和没有都一样。

评分

参与人数 1学分 +1 收起 理由
love586 + 1 谢谢这句,试着换一下就ok

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-1-1 20:45 | 显示全部楼层
大灰狼1976 发表于 2022-1-1 20:36
根据你的代码,jg(i, j) = arr(i, 1) & "一" & brr(1, j)只在满足If reg.test(brr(1, j)) Then条件为否时才 ...

大佬,
                i = Right(arr(i, 1), 7)
                j = Right(brr(1, j), 7)

     值怎么变会原 i j 值
回复

使用道具 举报

发表于 2022-1-1 21:03 | 显示全部楼层
love586 发表于 2022-1-1 20:45
大佬,
                i = Right(arr(i, 1), 7)
                j = Right(brr(1, j), 7)

没看明白你的意思,Right(arr(i, 1), 7) 是一个字符串,i和j是数值变量,不能赋值,你想要什么结果?
回复

使用道具 举报

 楼主| 发表于 2022-1-1 21:18 | 显示全部楼层
大灰狼1976 发表于 2022-1-1 21:03
没看明白你的意思,Right(arr(i, 1), 7) 是一个字符串,i和j是数值变量,不能赋值,你想要什么结果?



合并不相同字母,同时满足Right(arr(i, 1), 7)=Right(arr(1, j), 7)
才运算:Range("b2").Resize(UBound(arr), UBound(brr, 2)) = jg



字符相同.rar (35.64 KB, 下载次数: 0)
回复

使用道具 举报

 楼主| 发表于 2022-1-1 21:39 | 显示全部楼层
试了一下把qp值调出上面就就搞定
回复

使用道具 举报

发表于 2022-1-1 21:42 | 显示全部楼层
搞定就好
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 22:11 , Processed in 0.516764 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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