2011-12-21 40 views

Respuesta

52

¿Quiere decir que quiere usar una fórmula en VBA? Algo como:

Dim iVal As Integer 
iVal = Application.WorksheetFunction.COUNTIF(Range("A1:A10"),"Green") 

debería funcionar.

+2

Por cierto, puede agregar comodines a su cadena de búsqueda de esta manera:' iVal = Application.WorksheetFunction.COUNTIF (Rango ("A1: A10"), "* Verde *") ' –

11

Esto no es exactamente lo que está buscando, pero he aquí cómo he abordado este problema en el pasado;

Puede ingresar una fórmula como;

=COUNTIF(A1:A10,"Green") 

... en una celda. Esto contará el Número de celdas entre A1 y A10 que contienen el texto "Verde". A continuación, puede seleccionar este valor de celda en una macro de VBA y asignarlo a una variable de forma normal.

+0

Su respuesta desserves un 1 para dar el camino correcto a seguir. Y espero que esto lo anime a seguir respondiendo otras preguntas – JMax

+0

Buena respuesta gracias, muestra una forma diferente de hacerlo – BradStevenson

2

one way;

var = count("find me", Range("A1:A100")) 

function count(find as string, lookin as range) As Long 
    dim cell As Range 
    for each cell in lookin 
     if (cell.Value = find) then count = count + 1 '//case sens 
    next 
end function 
+0

Funciona - pero será muy lento en rangos de tamaño decente para probar celda por celda, mejor utilizar un funcionar como lo hizo JMax, o usar el método 'Find' del rango – brettdj

+0

Funciona, y es genial gracias, pero como el método anterior de JMax parece funcionar mejor para mí – BradStevenson

0

No es lo que pidió, pero puede ser útil sin embargo.

Por supuesto, usted puede hacer lo mismo con las fórmulas de matriz. acaba de leer el resultado de la celda que contiene:

Cell A1="Text to search"
Cells A2:C20=Range to search for

=COUNT(SEARCH(A1;A2:C20;1)) 

Recuerde que entrar en las fórmulas de matriz necesita CTRL + SHIFT + ENTER, no sólo ENTER. Después , que debe ser similar:

{=COUNT(SEARCH(A1;A2:C20;1))}

+2

bummi ... ¿No sería genial si alguien que hace una evaluación negativa dice por qué? Entonces la próxima vez, ¿no cometeré el mismo error? Sé que soy un novato, así que podría estar equivocado ... –

+1

No soy la persona que votó por esto, pero mi suposición es que la pregunta comenzó "Necesito escribir una macro" y tenía "VBA". "al comienzo del título, pero tu respuesta es en realidad una función de hoja de cálculo. A mí también me resulta molesto ver a los votos bajos sin explicación. –

Cuestiones relacionadas