¿Traducción de Excel vba?
Dim d declara variables como objetos
Dim ss$, n %' declara variables
Alcance ("A2:H"& amp ; [A65536]. Eliminar shift:= xlup 'Elimina la última celda no vacía en las columnas A2 a A y muévela hacia arriba al rango de la columna h.
m=1. 【d65536】. final (xlup). "fila" obtiene el número de fila de la última celda no vacía en la columna Hoja1d.
arr = Hoja1. range("d 1:h"m) lee los datos de las columnas Sheet1d a h en la matriz arr.
Establezca d = createobject("script.Dictionary)" para crear el diccionario.
redim brr(1bound(arr), 1to 4) ‘Crea una matriz bidimensional brr.
Para I = 2 para UBound(arr), la función de este bucle es fusionar los mismos datos en la primera columna de arr y ponerlos en brr.
ss = arr(I, 1)
Si d no existe (ss), entonces
n = n + 1
d. Añadir ss, n
brr (n, 1) = arr (I, 1):brr (n, 2) = 1:brr (n, 3) = arr (I, 4). ) :brr(n,4) = arr(I,5)
Otro
brr(d(ss),2) = brr(d(ss,2)+1
brr(d(ss),3) = brr(d(ss),3 "|"& arr(i,4)
brr(d(ss)). ,3). ), 4) = brr(d(ss), 4). "|" & arr(i, 5)
terminará si
entonces
Bt =【{"Número de serie",",",","Cantidad","Segmento de código","Segmento sin código","Segmento de código poco claro","Número de hogares"}]'Inicializar matriz Bt .
Columna("b:c").numberformatlocal="@""Formatear la columna bc como texto.
D. Borrar diccionario
redimcrr ( 1 a (m-1) + n * 3, 1 a 8)' Crea una matriz bidimensional crr
hs = 0
Para i = 1 a n' esto. El bucle crea una tabla para cada fila de datos en brr
Para j = 1 a 8', este bucle inicializa el encabezado
crr(1+hs,j) = Bt. j)
Entonces
La columna D "CRR (1+hs, 2) = BRR (I, 1)" de la tabla original se coloca en la segunda columna del título.
p>p 1 = Dividir(brr(I,3),"|""Dividir.
P2 = Dividir(brr(I,4),"|"" Split.
for j = 1 To brr(I, 2)' Este bucle divide la fila fusionada de datos brr en filas originales y las almacena en crr
crr(j+1 ). +hs, 1) = j' La primera columna es el número de secuencia
crr (j+1+hs, 2) = p 1 (j-1)' La segunda columna es la columna G de. la tabla original.
crr(j+1+hs, 3) = p2(j-1)'La tercera columna es la columna H original
ss = Right(. crr(j+1) +hs, 3), 6)' Tome los 6 dígitos correctos de los datos en la columna H de la tabla original, cuente en la octava columna, no agregue "*" y no repita.
Si InStr(ss, "*") = 0 entonces
Si d no existe (ss), entonces
d.adds ss, "
crr(j+1+hs, 8) = 1
crr(brr(I, 2)+2+hs, 8) = crr(brr(I, 2) + 2+hs, 8) +1
Terminará si...
Terminará si...
si InStr(crr(j +1+hs, 2)&crr(j+1+hs,3) "*") = 0 Entonces los datos de las columnas G y H de la tabla original se cuentan en la columna 5 sin "*", pero todos los "* " se incluyen en la columna 6 y los datos restantes se incluyen en la columna 7.
crr(j+1+hs, 5) = 1
crr(brr(I, 2 )+2+hs,5)=crr(brr(I,2)+2+hs,5)+1
Otro
if Len(Reemplazar(crr(j + 1+hs,2)&crr(j+1+hs,3)"*"""))=0 entonces
crr(j+1+hs,6)=1
crr(brr(I,2)+2+hs,6) = crr(brr(I,2)+2+hs,6)+1
Otros
crr(j+1+hs,7)=1
crr(brr(I,2)+2+hs,7) = crr(brr(I,2)+2+ hs, 7) + 1
Terminará si...
Terminará si...
crr(j+1+hs, 4) = 1
crr(brr(I,2)+2+hs,4) = crr(brr(I,2)+2+hs,4)+1
Entonces
crr(brr(I,2)+2+hs,1)="Total"
crr(brr(I,2)+3+hs,1)="Observaciones: Cigarrillos "&crr(brr(i,2)+2+hs,4) y "artículo, fragmento de código" &crr(brr(i,2)+2+hs,5). "artículo, sin fragmento de código", crr (brr (I, 2) + 2 + hs, 6) * 1. "La línea y el segmento de código no están claros" & crr (brr (I, 2) + 2 + hs, 7) "Bar, involucrado. Número de hogares "& crr (brr (I, 2) + 2 + hs, 8) * 1 & "hogar"
d. Eliminar todas
celdas ( 1, "a"). BRR (I, 2) + 1 + hs, 0). Cambiar el tamaño (1, 3). "Fusionar" la penúltima fila de cada tabla.
Celda(1, "a"). Fin (3). Compensación(BRR(I,2)+2+HS,0). cambiar el tamaño (1,8). "Fusionar" fusiona celdas para que la última fila de cada tabla tenga 8 columnas.
Celda(1, "a"). Fin (3). cambiar el tamaño (1,2). desplazamiento(hs,1). "Fusionar" combina celdas que contienen 2 y 3 columnas en el encabezado. Además, esta línea es redundante con el código al final de la línea anterior (3). ¿Tiene el mismo efecto?
hs = hs+brr (I, 2) + 3 ‘El número total de filas de la tabla.
Entonces
Celda(1, "a"). resize(ubound(crr),8) = crr escribe datos CRR en la celda.
rango("a 1:h"&[a65536].end(tres).fila). marco. estilo de línea = 1 'Establecer el borde.
Conector final