Belirtilen bir sütundaki her hücreye rağmen yinelenen aşağıdaki makro var. Hücre dizenin değerini içeriyorsa #VALUE!, (tamsayı içeren) altındaki ve altındaki 2 hücrenin ortalaması ile değiştirilir.
Sub Checker()
Dim Qty As Range
For Each Qty In Range("A1:A5").Cells
If InStr(1, (Qty.Text), "#VALUE!") Then
Qty.FormulaR1C1 = "=AVERAGE(R[-2]C:R[-1]C,R[1]C:R[2]C)"
End If
Next
End Sub
Yani:
A A
1 10 1 10
2 10 2 10
3 #VALUE! -> 3 10
4 10 4 10
5 10 5 10
Şimdi makroyu aramak istiyorum 0 yerine #VALUE!.
A A
1 10 1 10
2 10 2 10
3 0 -> 3 10
4 10 4 10
5 10 5 10
Kodda ne değiştirmem gerekir?
Basitçe değiştirme "#VALUE!" için "0" çalışmıyor Tahminim yerine başka bir işlev kullanmaktır. InStr ama VBA ile pek aşina değilim.
"Çalışmıyor" derken ne demek istiyorsun? Kod ne işe yarıyor, ne bekliyorsunuz?
—
Werner Henze
@Dave - Teşekkürler dostum, bir düzenleme yaptı. Evet demek istedim
—
Joseph
"0" ve kaldırıldı Set wks = ActiveSheet gereksiz olduğu gibi.
@WernerHenze - Teşekkürler dostum, yazıyı düzenledi.
—
Joseph
@Dave - Tekrar teşekkürler, Modül 10'u kullanmaya göz atacağım. Kullandığım veri setinde can sıkıcı şeyler var
—
Joseph
* daha önce gelen semboller #VALUE! sevmek *#VALUE! (Bu benim veri setim değil, oraya nasıl ulaştığından emin değilim). Bu yüzden neden kullandım InStr.
Her ikisini de denetlemeniz gerekiyorsa, IsNumeric () işlevini de düşünebilirsiniz. techonthenet.com/excel/formulas/isnumeric.php
—
Dave