Trending News
Excel 判斷+計算vba 求會的大大~急跪求orz
跪求會的神大大~~幫忙完成vba
有顏色的 兩個格子,要做2次的處理 例:U18,V18
完整說明在檔案裡
紅字答案的部份。有些是我手動填進去的
我vba裡面,無法計算…都是0…不知哪兒數值出錯...沒完成計算= =
求會的大大,幫忙除錯一下…
有勞...拜託了
檔案裡已有我寫的vba,是沒問題的巨集,不會破壞電腦之類的
附上圖片
https://drive.google.com/file/d/0B2sa99IHmd9VQlpzM...
再次感謝一直協助的神大大阿...。。。感激不盡~~囧rz
感謝Lopez大大
請問這是用sub
我要如何使用在格子裡呢...
在 U19 格子輸入
=Find_Min(U18,V18)
這樣嗎? 我使用了,名稱無效
這個比較的範圍不是大範圍區域性的,都是相鄰的 2個格子,裡面的數字
例:
M22 = Find_Min(M21,N21)
AC22 = Find_Min(AC21,AD21)
感謝 Lopez大大 一直協助。
試了一下
sub 好像不能在格子裡填入 兩個目標格
例如,在 U19 格子輸入
=Find_Min(U18,V18) 這樣
我會往下做100多層@@............
這樣,每2格都要輸入一次,當數值一改變,無法連動了
有沒比較方便填的方法呢...
可以直接修改 兩個目標格...
SUB,我不太會用,
Lopez大大
是否教一下,如何可以數值改變的情況下自動套用.......感謝
3 Answers
- LopezLv 76 years agoFavorite Answer
執行前,請先清空說明文字,因為說明文字會影響計算.
(或是先剪下儲存格內的說明文字,貼到文字方塊)
計算區域參照你前一題的,採用E13:AJ29
Sub Find_Min()
Set R = Range("E13:AJ29")
U = R.Cells.Count - 1
For i = 1 To U
If HasBorder(R.Cells(i)) And HasBorder(R.Cells(i + 1)) Then
Cells(R.Cells(i).Row + 1, R.Cells(i).Column) = ""
a = R.Cells(i)
b = R.Cells(i + 1)
With Application
p = Int(.Max(a, b) / 600)
q = Int(.Min(a, b) / 300)
If .Min(p, q) > 0 Then
Cells(R.Cells(i).Row + 1, R.Cells(i).Column) = .Min(p, q)
End If
End With
End If
Next
End Sub
Function HasBorder(Cell As Range) As Boolean
Dim i As Variant
For Each i In Array(xlDiagonalDown, xlDiagonalUp, xlEdgeLeft, _
xlEdgeTop, xlEdgeBottom, xlEdgeRight)
If Cell(1).Borders(i).LineStyle <> xlLineStyleNone Then
HasBorder = True
Exit For
End If
Next
End Function
2015-05-24 21:48:36 補充:
我將程式加了按鈕,請自行下載:
除了加上按鈕,還有其他變更,說明如下:
原本用連續兩格有框線,做為計算目標,因此才有HasBorder函數.
但依照你的說明,框線似乎只是題目說明的輔助,
所以改版後的程式不需要HasBorder函數,
而是用連續2格有數字作為計算目標.
2015-05-24 21:55:48 補充:
Sub 是副程式,與函數Function不同:
Function要輸入在儲存格中,隨著輸入值不同,結果也不同;
Sub 是執行一連串指令,
所以我將程式加了按鈕,按鈕已對應Find_Min這個副程式,
按下按鈕就會執行整個區域所有的計算.
我將整個區域設定在程式第一行:
Set R = Range("E13:AJ200")
請按你實際的計算需要,自行調整.
Source(s): HasBorder函數參考自: http://www.excelforum.com/excel-programming-vba-ma... - 准提部林Lv 76 years ago
U19.一般公式:
=IF(COUNT(U18:V18)=2,MIN(INT(LARGE(U18:V18,{1,2})/{600,300})),"")
2015-05-24 12:37:23 補充:
格子外的數量:
Function CountValue(R As Range, X) As Long
Dim H As Range, N&
For Each H In R
If H.Formula & "" = X & "" Then N = N + 1
Next
CountValue = N
End Function