2012-01-04 12 views
7

Belirli bir değer içeren bir sütundaki hücre sayısını saymalıyım. Şimdi yaSayısız VEYA Ölçütlü Sayif

  • SAL, veya
  • PRE
+0

neden olmasın basit İkinci satır 'iVal2 = Application.WorksheetFunction.COUNTIF (Range ("A: A"), "PRE")' ve ardından eklemek (veya her ikisi raporu) toplam olarak değişkenleri? – brettdj

+0

Çünkü yaklaşık 20 değişkene kadar ekleyeceğim ve bunu yaklaşık 30 farklı sütun için yapacağım, bu yüzden hepsini tek bir satır halinde alabileceğim kadar çok işi keseceğim! – BradStevenson

+1

Sütunun değerlerini bir diziye okumaya ne dersiniz? Sonra döngü yapabilir, koşullar ekleyebilir ve benzeri? – JimmyPena

cevap

7

içerirler kaç hücre saymak gerekir, Ancak

iVal = Application.WorksheetFunction.COUNTIF(Range("A:A"), "SAL")

: Şu anda aşağıdaki kodu kullanıyorum En hızlı yol sadece 2 COUNTIF:

iVal = Application.WorksheetFunction.CountIf(Range("A:A"), "SAL") + Application.WorksheetFunction.CountIf(Range("A:A"), "PRE") 
+0

+ 1, CountIf yalnızca bir parametre kabul edebileceğinden bu en iyi yaklaşımdır. –

+1

Bu harika çalışıyor ama uzun vadede çok daha değişken bir yöntemle sonuçlanacak ve daha verimli bir yöntem bulmaya çalışacağım; – BradStevenson

+0

@MattDonnan aslında COUNTIF'i birden fazla testte beslemek mümkündür, yukarı bakınız. – brettdj

18

Sen (birden fazla argüman alabilir) standart EĞERSAY formülün VBA eşdeğer kullanabilirsiniz. Bu
MsgBox Evaluate("Sum(COUNTIF(A:A,{""PRE"",""SAL""}))")

+1

+1 Şimdiye kadar en iyi yanıtı kaçırmayın! Bir dizi dizgeyi iletmek için VBA seçeneği eklemek için ödeme yapabilir miyim 'MsgBox Evaluate (" Sum (COUNTIF (A: A, {"" "& Join (v," "", "" ") &" ""})) " ' –

+0

@chrisneilsen thx - ve dize dizisi üzerinde mükemmel öneri. – brettdj

2

Neden CountIfs işlevini kullanın Yüklü
=SUM(COUNTIF(A:A, {"SAL","PRE"}))

VBA Eşdeğer gerekli

Standart Formül olarak genişletilebilir?

Örnek:

Application.CountIfs(CR1_range, V_1, CR2_range, V_2, CR3_range, V_3, CR4_range, V_4) 

CR1_range besbelli aralıktır ve v_1 sizin değişken

Düzenleme geçerli:-posta ile gönder (Herkes ilgileniyor örtmek başvuru için silmedim) Sadece bir VEYA ifadesi olması gerektiğini gördük, cevabım sadece

0

benim için iyi çalıştı takiben Bir VE ifadesinde için de kullanılabilir: -

Dim val1 as string, val2 as string 

val1 = "value1" 
val2 = "value2"  

count = Application.WorksheetFunction.CountIfs(ThisWorkbook.Names("firstname").RefersToRange, val1 , ThisWorkbook.Names("secondname").RefersToRange, val2) 

Bu webpage, Excel'deki Adlandırılmış Aralıklarla ilgili olarak yardımcı olur.

İlgili konular