如何根据2D坐标及其值对单元格进行着色?新Excel函数

时间:2016-12-21 06:43:31

标签: excel excel-vba excel-formula ms-office vba

我是Excel EVB的新手,我只是一个普通的Excel用户,但打算做一些专业的东西。我做了一些谷歌,但是,我没有任何线索可以开始。

我正在尝试创建一个新的excel函数,允许用户根据X,Y坐标及其值为单元格着色。

首先,我有一个预定义的X,Y映射(见下面的Colum A:E),而Cell C3是我的原点(0,0)。

其次,我有一个X,Y数据表,其中包含每个(X,Y)坐标的值。

enter image description here

现在,我想根据具有多个条件的表中的数据为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

enter image description here

最终结果如下:

enter image description here

问题:如何根据上述要求创建新的Excel功能?有什么想法和意见吗?

3 个答案:

答案 0 :(得分:1)

使用以下公式填充单元格

=SUMPRODUCT(($G$2:$G$26=COLUMN()-3)*($H$2:$H$26=-ROW()+3)*$I$2:$I$26)

使用条件格式在单元格中获取所需的颜色。

Conditional Formatting

按要求的公式说明:

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