Excel精英培训网

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

[已解决]求助!如何根据匹配内容引用单元格颜色!

[复制链接]
发表于 2016-10-6 13:37 | 显示全部楼层 |阅读模式
本帖最后由 sam797001 于 2016-10-6 13:44 编辑

原帖发布到"Excel常见问题"区发现好像发错了位置

求助1:在图二中当F列的下拉菜单变化时则相对的D列E列返回对应的结果,D列返回本地硬盘缩略图,E列返回本地硬盘文件地址;
求助2:在图一中当F列的下拉菜单变化时则相对的G列H列返回对应的结果,G列返回颜色,H列返回RGB16进制颜色代码.

附上H列新手设置的公式,如果可以简化请高手大大帮助修改下,万分感谢.=IF(F2="","",IF(F2="天使的愤怒","#",IF(F2="天使的狂怒","#FFD700",IF(F2="大天使的愤怒","#FFB6C1",IF(F2="大天使的狂怒","#9400D3",IF(F2="天使的柔情","#E6E6FA",IF(F2="大天使的柔情","#B0C4DE",IF(F2="天使的激情","#7CFC00",IF(F2="大天使的激情","#D2B48C")))))))))

本人因初次接触Excel函数应用,很多都时不懂的,但目前因为工作需要急须解决此问题,往高手大大们帮助.


解决思路1:昨天晚上守到一点多发现居然无法编辑....
        在兰色幻想老师的Excel函数课程中学习到CHOOOSE函数,改变思路在F列前插入一列将数据有效性设置为1----无限,后续栏的原H列IF函数变更为=CHOOSE(F2,"#000000","#000001","#000002","#000003","#000004","#000005","#000006","#000007","#000008","#000009")
相应原F列增加
=CHOOSE(F2,"天使的愤怒","大天使的愤怒","天使的狂怒","大天使的狂怒","天使的柔情","大天使的柔情","天使的激情","大天使的激情")
简化了编码长度,并且提高了输入的效率.

后续2:因为没有找到相关的资料和得到求助结果,改换思路,将以上信息引入多个外部资料表格,以求达到引用匹配值的返回结果.

最终求助问题:以上求助1和2经过各种查找资料已经基本能够自行解决,但H列返回之结果只能取值,不能取得单元格的颜色,请高手大人帮忙解决,感激不尽!

为了避免大家错误理解求助的问题做一下情况说明:
此例子附件放出仅9行内容,楼主实际工作的列表可能超过8万行,每行的下拉菜单中还有1到数百格下拉选项,所以匹配的颜色可能超过200万种,无法通过条件格式,复制和格式刷什么的来简单匹配,仅能引用颜色代码通过颜色资源表来做到颜色引用.




最佳答案
2016-10-6 18:21
sam797001 发表于 2016-10-6 17:14
首先感谢你提供的代码,不过这个代码用什么功能实现,再请教下,因为从来没有接触过代码,用宏录制进去无法报 ...

见附件,自己可以加个按钮,也可直接按vbe中的运行

原图1

原图1

原图2

原图2

问题请教样表.zip

95.72 KB, 下载次数: 3

此附件因涉及商业信息主要内容以删除,仅放出示例行和列.

发表于 2016-10-6 15:54 | 显示全部楼层
  1. Sub tt()
  2.     Dim lstRw As Long
  3.     Dim i As Long, RGB_num As Integer
  4.     On Error Resume Next
  5.     With Sheets("sheet1")
  6.         lstRw = Sheets("sheet1").Range("i1").End(xlDown).Row
  7.         arr = Sheets("sheet3").Range("k3:n910").Value
  8.         For i = 2 To lstRw
  9.             RGB_num = 0
  10.             Do
  11.                 RGB_num = RGB_num + 1
  12.                 If RGB_num > UBound(arr) Then MsgBox "颜色代码未找到": End
  13.             Loop Until arr(RGB_num, 4) = .Range("I" & i)
  14.             Range("J" & i).Interior.Color = RGB(arr(RGB_num, 1), arr(RGB_num, 2), arr(RGB_num, 3))
  15.         Next i
  16.     End With
  17. End Sub
复制代码

用代码试试吧,若要用函数,可以用条件格式,不过会写好多条件
回复

使用道具 举报

 楼主| 发表于 2016-10-6 17:14 | 显示全部楼层
本帖最后由 sam797001 于 2016-10-6 17:41 编辑
苏子龙 发表于 2016-10-6 15:54
用代码试试吧,若要用函数,可以用条件格式,不过会写好多条件

首先感谢你提供的代码,不过这个代码用什么功能实现,再请教下,因为从来没有接触过代码,用宏录制进去无法报错,原谅我是十足新手...

在你提供的代码中我观察了下代码提示的有些代码行和列标识,其实文件源在sheet3中,sheet1的J和K列并不存在是我为了说明效果加上的辅助列,要读取的颜色和颜色代码均位于sheet3中.
回复

使用道具 举报

发表于 2016-10-6 18:21 | 显示全部楼层    本楼为最佳答案   
sam797001 发表于 2016-10-6 17:14
首先感谢你提供的代码,不过这个代码用什么功能实现,再请教下,因为从来没有接触过代码,用宏录制进去无法报 ...

见附件,自己可以加个按钮,也可直接按vbe中的运行

问题请教样表.rar

163.33 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2016-10-6 19:31 | 显示全部楼层
苏子龙 发表于 2016-10-6 18:21
见附件,自己可以加个按钮,也可直接按vbe中的运行

非常感谢您的热心解答,虽然此附件的答案我是想在H列体现颜色,而返回结果出现在了J列,但是我自行在宏命令中将所有涉及J字母的编码都替换为了H,完美实现了我所想达到的效果,再次感谢.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 15:29 , Processed in 0.300347 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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