Excel精英培训网

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

[已解决]自動檢測該格的字元與其他B欄的字元交換位置

[复制链接]
发表于 2017-5-26 11:15 | 显示全部楼层 |阅读模式
本帖最后由 ioi_chan 于 2017-5-27 12:19 编辑

請問利用vba, 在B欄中任意一格輸入CCC後, 除了自身有CCC的這一格外,會自動檢測該格的字元與其他B欄的字元交換位置,請看附件。
感謝各位老師的幫忙,謝謝!

最佳答案
2017-5-26 18:33
ioi_chan 发表于 2017-5-26 14:06
B欄的每個單元格的內容字元是唯一的,不會重複, 所以只會替換一個

代码如下 :
  1. Dim Ad
  2. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  3. Application.EnableEvents = False
  4. If Target.Column <> 2 Or Target.Count > 1 Then Exit Sub
  5. Ad = Target
  6. Application.EnableEvents = True
  7. End Sub
  8. Private Sub Worksheet_Change(ByVal Target As Range)
  9. If Target.Column <> 2 Or Target.Count > 1 Then Exit Sub
  10. Application.EnableEvents = False
  11. Dim y, ar, i
  12. y = Range("B65536").End(3).Row
  13. ar = Range("a1:b" & y)
  14.     For i = 1 To UBound(ar)
  15.         If i <> Target.Row Then
  16.             If Target = ar(i, 2) Then
  17.                 Cells(i, 2) = Ad
  18.             End If
  19.         End If
  20.     Next i
  21. Application.EnableEvents = True
  22. End Sub
复制代码


test.zip

25.42 KB, 下载次数: 8

发表于 2017-5-26 13:32 | 显示全部楼层
有多个相同内容的单元格时,交换哪一个,是最上面的吗,还是全部替换?
回复

使用道具 举报

 楼主| 发表于 2017-5-26 14:06 | 显示全部楼层
本帖最后由 ioi_chan 于 2017-5-26 16:09 编辑
大灰狼1976 发表于 2017-5-26 13:32
有多个相同内容的单元格时,交换哪一个,是最上面的吗,还是全部替换?

B欄的每個單元格的內容字元是唯一的,不會重複, 所以只會替換一個
回复

使用道具 举报

发表于 2017-5-26 17:15 | 显示全部楼层
下班了,明天再看吧。
回复

使用道具 举报

发表于 2017-5-26 18:33 | 显示全部楼层    本楼为最佳答案   
ioi_chan 发表于 2017-5-26 14:06
B欄的每個單元格的內容字元是唯一的,不會重複, 所以只會替換一個

代码如下 :
  1. Dim Ad
  2. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  3. Application.EnableEvents = False
  4. If Target.Column <> 2 Or Target.Count > 1 Then Exit Sub
  5. Ad = Target
  6. Application.EnableEvents = True
  7. End Sub
  8. Private Sub Worksheet_Change(ByVal Target As Range)
  9. If Target.Column <> 2 Or Target.Count > 1 Then Exit Sub
  10. Application.EnableEvents = False
  11. Dim y, ar, i
  12. y = Range("B65536").End(3).Row
  13. ar = Range("a1:b" & y)
  14.     For i = 1 To UBound(ar)
  15.         If i <> Target.Row Then
  16.             If Target = ar(i, 2) Then
  17.                 Cells(i, 2) = Ad
  18.             End If
  19.         End If
  20.     Next i
  21. Application.EnableEvents = True
  22. End Sub
复制代码


回复

使用道具 举报

 楼主| 发表于 2017-5-27 06:27 | 显示全部楼层
老師,假設隔壁的C欄有字元,請問怎樣寫才可以將C欄也一起作相對應的互換?
觸發點也是B欄的任何一單元格.
再次謝謝老師的幫忙!
回复

使用道具 举报

发表于 2017-5-27 16:20 | 显示全部楼层
ioi_chan 发表于 2017-5-27 06:27
老師,假設隔壁的C欄有字元,請問怎樣寫才可以將C欄也一起作相對應的互換?
觸發點也是B欄的任何一單元格. ...

把数组ar宣告到C列,然后每个比对即可(从代码12行开始)。
小修改你应该可以自己完成。

评分

参与人数 1 +1 收起 理由
ioi_chan + 1 赞一个

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-5-27 17:11 | 显示全部楼层
france723 发表于 2017-5-27 16:20
把数组ar宣告到C列,然后每个比对即可(从代码12行开始)。
小修改你应该可以自己完成。

已經作出修改, 並完成c欄作變更對象。謝謝老師

点评

能自主学习有进步,赞一个  发表于 2017-5-27 17:19
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 07:21 , Processed in 0.479335 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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