Dizeleri değil değerleri aramak için aşağıdaki betiği nasıl değiştirebilirim?


0

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 "0" ve kaldırıldı Set wks = ActiveSheet gereksiz olduğu gibi.
Joseph

@WernerHenze - Teşekkürler dostum, yazıyı düzenledi.
Joseph

1
@Dave - Tekrar teşekkürler, Modül 10'u kullanmaya göz atacağım. Kullandığım veri setinde can sıkıcı şeyler var * 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.
Joseph

1
Her ikisini de denetlemeniz gerekiyorsa, IsNumeric () işlevini de düşünebilirsiniz. techonthenet.com/excel/formulas/isnumeric.php
Dave

Yanıtlar:


2
If InStr(1, (Qty.Text), "0") Then

dizede herhangi bir yerde "0" olup olmadığını kontrol edecek, istediğiniz gibi olmayabilir. Deneyin

If Qty.Text = "0" Then

veya

If StrComp(Qty.Text, "0") = 0 Then

Komple dize "0" olup olmadığını kontrol etmek için.

Komple dizgeyi karşılaştırmak da "# DEĞER!" İçin daha iyi bir çözüm olurdu. Kontrol.


Teşekkür ederim! Her iki değer için de dize karşılaştırma yöntemini dahil ettim ve kontrol etmek için "#VALUE!" =)
Joseph
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.