Red de conocimiento informático - Problemas con los teléfonos móviles - Preguntas sobre programación de VBA, los requisitos específicos son los siguientes

Preguntas sobre programación de VBA, los requisitos específicos son los siguientes

Le doy un ejemplo. Esto fue escrito por mí para resolver algunos problemas. Se pasó la depuración. Estos archivos se colocan en tres carpetas y se cuentan juntos. hay alguno Pregúntame claramente.

'Análisis de algoritmo de esta tabla

'Agregue el contenido del informe diario de productos defectuosos de este mes y el contenido de este mes de la tabla de resumen de mantenimiento de este mes, y al mismo tiempo agregue el contenido de la tabla de resumen de productos defectuosos de este mes El inventario mensual se acumula para calcular el inventario del mes actual

'Para facilitar la redacción del programa, el contenido de la tabla de resumen de productos defectuosos del mes anterior no se considera en realidad. uso, se puede copiar directamente del mes anterior

'Este algoritmo toma prestado el efecto de agregar nuevos elementos hacia abajo en el diccionario, por lo que no se puede confundir porque el inventario del mes anterior corresponde al número de material uno a uno

'La razón por la cual los tipos de números de materiales reparados este mes no se cuentan es porque todos los números de materiales en el informe diario defectuoso de este mes y el inventario del mes pasado cubren los números de materiales reparados este mes.

Sub RefreshData()

Dim wb_bl As Workbook 'Libro de trabajo de informe diario de producto defectuoso

Dim wb_wx As Workbook 'Libro de trabajo de informe diario de mantenimiento

Dim sht_me Como Hoja de Trabajo 'Este informe no es Tabla resumen de productos defectuosos

Dim sht_wx Como Hoja de Trabajo 'Informe diario de mantenimiento

Dim sht_bl Como Hoja de Trabajo 'Informe diario de productos defectuosos

Dim str As String

Establecer sht_me = ThisWorkbook.ActiveSheet

str = ThisWorkbook.Path

str = Mid(str, 1, InStrRev( str, "\")) 'Obtener el directorio superior

Application.ScreenUpdating = False

Establecer wb_bl = GetObject(str & "Informe diario de productos defectuosos" & "\" & Left(ThisWorkbook.Name, 2) & "Estadísticas anuales de productos defectuosos.xlsm")

Establecer wb_wx = GetObject(str & "Informe de mantenimiento diario" & "\" & Left(ThisWorkbook.Name, 2) & "Estadísticas de mantenimiento anual.xlsm")

Para cada sht_bl en wb_bl.Sheets 'Obtener informe diario de producto defectuoso mes

Si sht_bl.Name = sht_me.Name Entonces

Salir para

Finalizar si

Siguiente

Para cada sht_wx en wb_wx.Sheets 'Obtener informe diario de mantenimiento mensual

Si sht_wx.Name = sht_me.Name Entonces

Salir para

Finalizar si

Siguiente

Establecer d = CreateObject("scripting.dictionary")

Dim cnt_me As Integer

Dim cnt_bl As Integer

Dim cnt_wx como entero

Dim arr1, x como entero

arr1 = sht_me.Range("b3:b" & sht_me.Range("b65536"). End(xlUp).Row)

For x = 1 To UBound(arr1) 'Importa el número de material del mes correspondiente en esta tabla al diccionario

d(arr1(x , 1) ) = x + 1

Siguiente x

arr1 = sht_bl.Range("b3:b" & sht_bl.Range("b65536").End(xlUp). Fila)

For x = 1 To UBound(arr1) 'Importar el número de material del mes correspondiente del producto defectuoso al diccionario

d(arr1(x, 1)) = x + 1

Siguiente x

'La razón por la que no es necesario importar los números de material en la tabla de estadísticas de mantenimiento es que el contenido de mantenimiento debe basarse en el inventario de el mes anterior y los defectos de este mes

sht_me.Range ("B3").Resize(d.Count, 1) = Application.WorksheetFunction.Transpose(d.keys)

cnt_me = sht_me.Cells(65535, 2).End(xlUp).Row

cnt_bl = sht_bl.Cells(65535, 2).End(xlUp).Row

cnt_wx = sht_wx.Cells(65535, 2).End(xlUp).Row

Para x = 3 Para cnt_me

sht_me.Cells(x, 4).Value = Application.WorksheetFunction .SumIf(sht_bl.Range("b3:b" & cnt_bl), sht_me.Cells (x, 2), sht_bl.Range("d3:d" & cnt_bl)) 'Número de productos defectuosos

sht_me.Cells(x, 5).Value = Application.WorksheetFunction.SumIf(sht_wx.Range ("b3:b" & cnt_wx), sht_me.Cells(x, 2), sht_wx.Range("c3:c" & cnt_wx )) 'Cantidad de reparación

sht_me.Cells(x, 6) .Value = Application.WorksheetFunction.SumIf(sht_wx.Range("b3:b" & cnt_wx), sht_me.Cells(x, 2) , sht_wx.Range("d3:d" &c

nt_wx)) 'Cantidad de desecho

Siguiente x

Establecer d = Nada

wb_bl.Close False

wb_wx.Close False p>

Establecer wb_bl = Nada

Establecer wb_wx = Nada

Application.ScreenUpdating = True

End Sub