我是Excel EVB的新手,我只是一个普通的Excel用户,但打算做一些专业的东西。我做了一些谷歌,但是,我没有任何线索可以开始。
我正在尝试创建一个新的excel函数,允许用户根据X,Y坐标及其值为单元格着色。
首先,我有一个预定义的X,Y映射(见下面的Colum A:E),而Cell C3是我的原点(0,0)。
其次,我有一个X,Y数据表,其中包含每个(X,Y)坐标的值。
现在,我想根据具有多个条件的表中的数据为X,Y贴图着色。
如果值> = 0 AND< = 4E-06,颜色单元格(地图)=绿色,单元格值=值
如果值> 4E-06 AND< = 9.9E-06,颜色单元格(地图)=蓝色,单元格值=值
如果值> 9.9E-6,颜色单元格(地图)=红色,单元格值=值
EG。从表中可以看出,如果X = 1,Y = 2,值= 2.2E-05,则单元格D1将显示为红色,调用值将设置为2.2E-05
最终结果如下:
问题:如何根据上述要求创建新的Excel功能?有什么想法和意见吗?
答案 0 :(得分:1)
使用以下公式填充单元格
=SUMPRODUCT(($G$2:$G$26=COLUMN()-3)*($H$2:$H$26=-ROW()+3)*$I$2:$I$26)
使用条件格式在单元格中获取所需的颜色。
按要求的公式说明:
COLUMN()-3
和-ROW()+3
在每个单元格中为您提供正确的(X,Y)对。
($G$2:$G$26=COLUMN()-3)
检查范围G2:G26中的每个单元格,并与COLUMN() - 3输出的X值进行比较。这将输出和数组TRUE(值匹配)和FALSE。
($H$2:$H$26=-ROW()+3)
检查Y值。
上述两个数组的乘积将产生一个1和0的数组(相当于TRUE和FALSE)。这个数组中只有一个1,因为只有一个X,Y对匹配。
这个数组与Values数组相乘(并求和),可以得到单元格中的最终值。
答案 1 :(得分:0)
我将采用的方法是使用子例程而不是函数。然后用while not isempty (.cells (intRow,7).value)
之类的东西迭代cols G:I。
然后,在每一行上,您可以使用cols G和H坐标使用来自原点的偏移来设置相关的单元格颜色属性。如有必要,您可以通过将其乘以-1来翻转方向。
您可以使用私有函数使用select case从col I值返回颜色。
对不起,不是靠近电脑编写代码,但如果你知道VBA就应该很容易。
答案 2 :(得分:0)
你的问题就像战舰一样 我的解决方案是:
Sub Battleship()
Dim cc As Range 'set center cell
Dim arrVal() As Variant
Dim lrw As Integer
lrw = ActiveSheet().Range("G2").End(xlDown).Row
arrVal = Range("G2:I" & lrw)
Set cc = Range("C3")
For i = 1 To UBound(arrVal())
cc.Offset(arrVal(i, 1), arrVal(i, 2)).Select
Selection.Value = arrVal(i, 3)
Select Case arrVal(i, 3)
Case 0 To 0.000004
Selection.Interior.Color = 5296274
Case 0.000004 To 0.0000099
Selection.Interior.Color = 15773696
Case Is > 0.0000099
Selection.Interior.Color = 255
End Select
Next i
End Sub