【发布时间】:2015-03-28 19:51:00
【问题描述】:
我正在寻找一种通过 VBA 代码但不是通过应用一些条件格式将色阶应用于一组单元格的方法...我想将它们应用为静态颜色(InteriorColor )
我搜索了很多 excel 网站、google 和 stackoverflow,但一无所获:(
对于我的情况,如果你看下图:
你可以看到我已经给它一个色阶,在这个例子中虽然我已经通过条件格式完成了色阶。我想通过 VBA 创建色阶 但它必须避免使用条件格式,我想为单元格分配内部颜色,以便颜色是静态的,这使得它们在所有移动 excel 查看器上可见,速度更快,如果我要删除任何数字/行,则不会改变。
以下是一些示例数据只需将其保存在 csv 中并在 excel 中打开即可查看 excel 中的数据:P:
Data 1 (Yes there are blanks),Data 2,Data 3,Data 4,Data 5,Data 6
155.7321504,144.6395913,1,-4,-9.3844,0.255813953
113.0646481,120.1609771,5,-2,-2.5874,0.088082902
126.7759917,125.3691519,2,0,-0.0004,0.107843137
,0,7,,,0.035714286
123.0716084,118.0409686,4,0,0.3236,0.118881119
132.4137536,126.5740362,3,-2,-3.8814,0.090909091
70,105.9874422,6,-1,-0.3234,0.103896104
我确实在 python 中使用了以下代码,但显然我不能在 VBA 中使用此代码,以下代码成功地将十六进制颜色分配给预定义的 50 种颜色数组中的数字,因此非常准确.
def mapValues(values):
nValues = np.asarray(values, dtype="|S8")
mask = (nValues != '')
maskedValues = [float(i.split('%')[0]) for i in nValues[mask]]
colorMap = np.array(['#F8696B', '#F86E6C', '#F8736D', '#F8786E', '#F97E6F', '#F98370', '#F98871', '#FA8E72', '#FA9373', '#FA9874', '#FA9E75', '#FBA376', '#FBA877', '#FBAD78', '#FCB379', '#FCB87A', '#FCBD7B', '#FCC37C', '#FDC87D', '#FDCD7E', '#FDD37F', '#FED880', '#FEDD81', '#FEE382', '#FEE883', '#FCEB84', '#F6E984', '#F0E784', '#E9E583', '#E3E383', '#DCE182', '#D6E082', '#D0DE82', '#C9DC81', '#C3DA81', '#BDD881', '#B6D680', '#B0D580', '#AAD380', '#A3D17F', '#9DCF7F', '#96CD7E', '#90CB7E', '#8ACA7E', '#83C87D', '#7DC67D', '#77C47D', '#70C27C', '#6AC07C', '#63BE7B'])
_, bins = np.histogram(maskedValues, 49)
try:
mapped = np.digitize(maskedValues, bins)
except:
mapped = int(0)
nValues[mask] = colorMap[mapped - 1]
nValues[~mask] = "#808080"
return nValues.tolist()
任何人都有任何想法,或者以前有人用 VBA 做过。
【问题讨论】:
-
就是这样,我的单元格中没有十六进制颜色...我有数字,但我无法进入十六进制颜色阶段
-
@Smandoli 这可能适用于大量受众,因为它正在尝试执行条件格式色标 这是一个常用功能,但通过 vba 将条件格式设置为 100 % 移动兼容,并使其在某些情况下更快、更静态和更好。您尝试在 Google 表格中打开具有条件格式颜色比例的工作表,但它们都不起作用,就像您有一个 vba 脚本将颜色添加到正确的比例一样,它将是可见的。
标签: vba excel excel-2007 excel-2013