TL; DR - Excel'in hücre içeriklerini hücre içinde nasıl sakladığı ve değiştirdiğini gösteren bir yapı. Boş bir hücre, programlama dillerinin sıfır ve sıfır olmayan değerlerin doğruluğunu nasıl ele almasından dolayı FALSE'ye dönüşen, değeri olmayan bir VARIANT'tir.
AND()
(Ve diğer tüm mantıksal işlevlerin) davranışı, her iki argümanı Boolean'a dönüştürmek ve ardından da mantıksal bir and
işlem gerçekleştirmektir . Kapakları geri sorabilir ve Visual Basic Düzenleyicisi'nin Nesne Tarayıcısı'nı kullanarak Excel nesne modelinde nasıl tanımlandığına bir göz atabilirsiniz:
Bir döndüren Not Boolean
, değil bir Variant
. Bu, fonksiyonun değerlendirilmesi sürecinde bir noktada, tüm argümanların Boolean
s'ye dönüştürülmesi gerektiği anlamına gelir . Gerçek gözlemlenen davranış, bunun işlemin başlarında yapıldığını gösterir - Excel, tüm argümanları dönüştürmeye çalışarak ve başarılı olursa hesaplamada dönüştürülen değerleri kullanarak kullanıcı dostu olmaya çalışır . Bu, String
"True" ve "False" değerlerini işleve ileterek gösterilebilir :
=AND("true","true") <---Results in TRUE
=AND("false","true") <---Results in FALSE
Etc.
Aynı zamanda sayısal argümanlarla da gösterilebilir - sıfır olmayan herhangi bir değeri true, false olarak kabul eder:
=AND(42,-42) <---Results in TRUE
=AND(0,0) <---Results in FALSE
=AND(42,0) <---Results in FALSE
Etc.
Kombinasyonlarda aynı davranışa sahiptir:
=AND("false",0) <---Results in FALSE
Etc.
Şimdiye kadar resmi almalısın. Öyleyse bu boş bir hücrenin test edilmesiyle nasıl ilgilidir? Bunun cevabı, Excel'in bir hücrenin içeriğini dahili olarak nasıl kaydettiğidir. Yine, Excel Nesne Modeli aydınlatıcı:
Bir COM VARIANT yapısı olduğuna dikkat edin . Bu yapı temel olarak 2 bölüm içerir - bir kodu, nasıl kullanılacağını yorumlayan bir kod ve bir veri alanı. Excel'de içerik içermeyen bir hücre Variant
, alt türüyle temsil edilen bir "değer" e sahip olacaktır VT_EMPTY
. Yine, bu bir makro ile doğrulanabilir:
Sub DemoMacro()
'Displays "True" if cell A1 on the active sheet has no contents.
MsgBox Range("A1").Value2 = vbEmpty
End Sub
Peki, AND
işlev bunu bir a'ya dönüştürdüğünde ne olur Boolean
? İyi soru! Programlama dillerinin tipik olarak sıfıra nasıl davrandığı gibi, False olur:
Sub DemoMacro2()
MsgBox CBool(vbEmpty)
End Sub
Tamamen argümanlar ekleyerek aynı davranışı görebilirsiniz :
=AND(,)
... aynı şey ...
=AND({vbEmpty},{vbEmpty})
... ki aynı ...
=AND(0,0)
...hangisi:
=AND(FALSE,FALSE)