Boole “VEYA” İşlev İçinde


2

Excel veya vba için yeni değilim; ancak, excel'de bir boolean "veya" işlevi olmaması konusunda biraz zorluk yaşıyorum. Bildiğiniz gibi, "&" işlevi iyi çalışıyor, ancak "|" veya "||" Operatör bir formüle. Bana "ya da" verecek bir alternatif var mı?

Not: Önceden tanımlanmış "veya işlev" (yani, [veya (koşul1, koşul 2 ...)] bu durumda yardımcı değildir. Geçerli hücre yerine başka bir hücre kümesindeki değerleri değerlendirir ve "true" değerini döndürür veya sayısal bir değer yerine "false".

Kullanmakta olduğum kod şu şekildedir: = IF (IFERROR (INDEX ($ H $ 2: INDIRECT ("H" & ROW () - 1)), MATCH ( 7 , $ D $ 2: INDIRECT ("D" & ROW ()) 1), 0)), 0) 99, (DOLAYLI ( "F" & Row ()) x 2), DOLAYLI ( "F" & Row = ()))

"7" değeri şu anda eşleştiriliyor. Eşleştirme (5 | 6 | 7, ... veya Eşleşme (5 || 6 || 7, ... gibi birden çok değerle eşleşmesini istiyorum.

Parlak bir fikrin var mı?


Birden fazla eşleştir ve sonra ne döndür? Çoklu?
Raystafarian

Formülünüzün genel akışını tam olarak anlamadım, ancak birden çok olası değeri eşleştirmeye çalışıyorsanız, hiç dizi formüllerine baktınız mı? excel-easy.com/functions/array-formulas.html
Steve Taylor

Burada özellikle istedikleriniz hiçbir zaman bir programlama dilinde yapılamaz. Bir yöntemin imzası sabittir. İlk argüman olarak tek bir dize kabul ettiğini söylüyorsa, o kadar.
Daniel B

1
"İyi &çalışıyor " derken ne demek istiyorsun ? Excel formüllerinde, &birleştirme işlecidir ve boolean işlemleriyle ilgisi yoktur.
hBy2Py 11:15

Burada bir "VEYA" nın nasıl çalışmasını istediğinizi tanımlamanız gerekir. Temel MATCH için bir For 7'lik ilk derece pozisyonunu bulacaksınız VEYA bunu ilk örneğinin konumunu bulmak istiyoruz herhangi 5, 6 ya da 7 ...... veya başka bir şey?
barry houdini

Yanıtlar:


2

Bu oldukça tıknaz, ancak IFERROR deyimlerini INDEX / MATCH öğesinin içine yerleştirebilirsiniz.

=INDEX(D:D,IFERROR(MATCH(5,D:D,0),IFERROR(MATCH(6,D:D,0),IFERROR(MATCH(7,D:D,0),""))))

ETA: Esas olarak D sütununda 5, sonra 6, ardından 7'yi arayarak çalışır. Barry'nin bu cevaba olan yorumlardaki çözümü muhtemelen bundan daha iyi bir cevaptır.


SuperUser'a Hoşgeldiniz! Bu, şu ana kadar gördüğüm en şık yaklaşım. Güzel!!
hBy2Py

Süper Kullanıcıya Hoşgeldiniz! Nasıl çalıştığını biraz açıklayabilirseniz daha iyi bir cevap olabilir.
DavidPostill

Bu bir problemi çözüyor ama bu problemi çözüp çözmediği bana belli değil! Bu, OR'un nasıl çalışması gerektiğine bağlıdır - eğer hem D hem de D sütununda mevcutsa, formül ilk konumlanan pozisyonunu döndürmeli mi? Elbette bu çözüm bunu yapmayacak. 5, D100'de ve 6'da D2'de ise, formülün MATCH kısmı 100
barry houdini

1
Excel 2010 ya da sonraki sürümleri =AGGREGATE(15,6,MATCH({5,6,7},D:D,0),1)
varsayalım

@barry Güzel. Karşılaştığım şeye göre çok daha az: = INDEX (D: D, MIN (IFERROR (MAÇ (5, D: D, 0), COUNTA (D: D) + 1), IFERROR (MATCH, 6, D: D, 0), COUNTA (D: D) + 1), IFERROR (MATCH (7, D: D, 0), COUNTA (D: D) +1)))
Kyle

2

Eğer istediğiniz varsayarsak maç için 5, 6ya 7ve bu formülü kullanabilirsiniz Bunlardan herhangi biriyle eşleşen ilk satırını bulun

=IF(IFERROR(INDEX($H$2:INDIRECT("H"&ROW()-1),AGGREGATE(15,6,MATCH({5,6,7},$D$2:INDIRECT("D"&ROW()-1),0),1)),0)=99,2,1)*INDIRECT("F"&ROW())

AGGREGATE işlevi yalnızca Excel 2010 veya sonraki sürümlerinde bulunur

Bu, MATCHparça şimdi 3 değerlik bir "dizi" döndürdüğü için - her biri 5, 6 ve 7 için bir tane - aralıktaki sayısal konum veya aralıkta #N/Ayoksa, eşleşme bu sonucu verebilir

{#N/A,4,11}

Bu, 5'in bulunmadığı, 6'nın arama aralığının 4. satırında, 7'sinin ise 11. satırda bulunduğu anlamına gelir.

Bu AGGREGATEnedenle işlev şu şekilde görünür:

AGGREGATE(15,6,{#N/A,4,11},1)

burada 14, uygulanacak fonksiyonun türü [ SMALL], 6, hataları görmezden gelir ve sondaki 1, k değerini tanımlar; SMALLbu nedenle, temelde {#N/A,4,11}, hataları yok sayarak en küçük değeri alır, bu durumda, bu, 4 değerini döndürür. 5, 6 veya 7 için ilk karşılaşmaya karşılık gelir


1

Bir "a VEYA b" işlevi, yalnızca "NOT (VE (NOT (a); NOT (b)))" işlevinin birleşik işlevleridir. Bu şekilde kullanırsanız, sonuç olarak aşağıdakileri verir.

A, DOĞRU, DOĞRU, YANLIŞ, YANLIŞ;

B, DOĞRU, YANLIŞ, DOĞRU, YANLIŞ;

fonksiyon, DOĞRU, DOĞRU, DOĞRU, YANLIŞ;

Bu istediğiniz kadar değişken içerecek şekilde genişletilebilir, ancak bunu bir eşleştirme işleviyle birlikte kullanabilirsiniz, şimdi asıl soru budur. Denemek için daha fazla ayrıntıya ve mümkünse dosyaya ihtiyacınız var.

Tüm değerleri basit bir döngüle denemek için, bunun için sadece bir senaryo yazabilirsiniz.

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.