Código de macro de Excel. Cómo implementar la transformación como se muestra en la figura, los requisitos son: transformación según el contenido como se muestra en la figura, el indicador se puede aumentar ② Se puede resumir automáticamente; ¡Gracias!
Ventana del programa:
Datos de prueba:
Generar resultados:
Código completo del programa:
Opciones explícitas
Conversión de subformato()
Dim arr1, arr2, n&, i&, j&, jj& amp;, t
arr1 = Sheets(1). /p>
n = UBound(arr1) * (UBound(arr1, 2) - 4) 'Número de filas en la tabla de resultados
ReDim arr2(1 To n, 1 To 6)
'Encabezado
j = 1
Para cada t en Array(arr1(1, 1), arr1(1, 2), arr1(1, 3 ), "Nombre del indicador", "Valor de prueba", arr1(1, UBound(arr1, 2)))
arr2(1, j) = t
j = j + 1
Siguiente t
'Contenido
n = 1
For i = 2 To UBound(arr1)
Para j = 4 Para UBound(arr1, 2) - 1
Si arr1(i, j) <> """Entonces
n = n + 1 p>
jj = 1
Para cada t en Array(arr1(i, 1), arr1(i, 2), arr1(i, 3), arr1(1, j), arr1 (i, j), arr1(i, UBound(arr1, 2)))
arr2(n, jj) = t
jj = jj + 1
Siguiente t
Fin si
Siguiente j
Siguiente i
'Guardar tabla
Hojas( 2).Activar
Usar Hojas(2).Range("a1").Resize(n, 6)
.Select
.Value = arr2
Terminar con
Fin del subtítulo