Red de conocimiento informático - Material del sitio web - ¿Cómo utilizar la programación VBA en Excel para filtrar las materias no calificadas de cada estudiante y ordenarlas de menor a mayor?

¿Cómo utilizar la programación VBA en Excel para filtrar las materias no calificadas de cada estudiante y ordenarlas de menor a mayor?

¿Opción?Explícita

Sub?Sfilter()

Dim?arr?As?Variante

Dim?brr()?As ?Variante

Dim?dat?As?Worksheet,?rs?As?Worksheet

Dim?i?As?Integer,?j?As?Integer

Dim?k?As?Integer,?ln?As?Integer

¿Activado?Error?Reanudar?Siguiente

¿Establecer?dat?=?Sheets("datos")?' Aquí, el carácter DATOS se modifica en la tabla original de calificaciones de los estudiantes

Set?rs?=?Sheets("res")?' Aquí, el carácter res se modifica en la hoja de trabajo de resultados de salida

arr? =?dat.[a1:d4]?' Aquí a1:d4 es el área donde se ubica la puntuación, incluido el encabezado y el nombre

For?i?=?2? A?UBound(arr)

k?=?0

Para?j?=?2?To?UBound(arr,?2)

Si ?arr(i,?j)? lt;?60?Entonces

k?=?k?1

ReDim?Preserve?brr(1?To?2,? 1?A?k)

brr(1,?k)?=?arr(1,?j)

brr(2,?k)?=?arr(i ,?j)

Fin?Si

Siguiente?j

ln?=?rs.[a60000].End(xlUp).Row ?1

rs.Rango("a"?amp;?ln)?=?arr(i,?1)

rs.Range("b"?amp;?ln) .Resize(1,?UBound(asort (brr)))?=?asort(brr)

¿Borrar?brr

¿Siguiente?i

establecer? dat=nada

set?rs=nada

Fin?Sub

¿Privado?Función?asort(ByRef?r?As?Variant)?As?Variant

¿Dim?i?Como?Entero,?j?¿Como?Entero

Dim?t1?Como?Variante,?t2?Como?Variante

Dim ?ln?As?Entero,?res ()?As?Variante

ln?=?UBound(r,?2)

For?i?=?1?A? ln?-?1

Para?j?=?i? ?1?A?ln

Si?r(2,?i)?gt;?r(2, ?j)?Entonces

t1?=?r(1,?i):?t2?=?r(2,?i)

r(1,?i) ?=?r(1,?j ):?r(2,?i)?=?r(2,?j)

r(1,?j)?=?t1:?r (2,?j)?=? t2

Fin?Si

Siguiente?j

Siguiente?i

ReDim?res (1?A?ln)

Para?i?=?1?A?ln

res(i)?=?r(2,?i)?amp;?"("?amp;?r(1,?i)?amp;?")"

¿Siguiente?i

asort?=?res

¿Fin?Función