2016-12-21 20 views
1

我是Excel EVB的新手,我只是一個普通的Excel用戶,但打算做一些專業的東西。我做了一些谷歌,但我不知道從頭開始。如何根據二維座標及其值對顏色進行着色?新的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和< = 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函數?任何想法和投入?

+0

你可以用這個公式來獲得在單元格的值,並應用條件格式,按您的條件。 '= SUMPRODUCT(($ G $ 2:$ G $ 26 = COLUMN() - 3)*($ H $ 2:$ H $ 26 = ROW() - 3)* $ I $ 2:$ I $ 26)' – nightcrawler23

+0

您也可以使用**條件格式**可以在不需要任何編碼的情況下使用,除非您的功能比較複雜,在這種情況下,您也可以通過此選項調用它。 – FDavidov

回答

0

我會採取的方法是與子例程而不是函數。然後沿cols G:I進行迭代,如while not isempty (.cells (intRow,7).value)。 在每一行上,您都可以使用列G和H座標使用來自原點的偏移來設置相關的單元格顏色屬性。如有必要,您可以將方向翻轉-1。 您可以使用私有函數使用select case從col I值返回顏色。 對不起,不靠近計算機編寫代碼,但應該很容易,如果你知道VBA。

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)。由於只有一個X,Y對匹配,因此該數組中只有一個1。

這個數組與數組相乘(並相加)將爲您提供單元格中的最終值。

+0

可以解釋方程嗎? – jhyap

+0

添加了解釋。實際上,您可以轉到「公式」選項卡 - >「公式審計」 - >「評估公式」以查看運算中的計算結果。 – nightcrawler23

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 
相關問題