Я уверен, что это возможно, я просто не уверен, какой код должен быть. у меня есть 2 листа: (1) Компонент, который имеет все Имена Компонентов, на которые аналитик был отмечен, включая даты, когда произошел вызов, и (2) Калькулятор, который подсчитывает количество раз, когда указанный компонент c появился в указанном c номере недели.
я создал код, который получает отдельные имена компонентов из таблицы компонентов, а затем копирует и переносит их на лист калькулятора. все имена компонентов находятся в строке 1, начиная со столбца D1, затем переходят в E1, F1 и т. д. я хочу, чтобы в строке 2 отображалось количество или количество раз, которое компонент (указанный в строке 1) появлялся за неделю.
Код, который у меня есть, работает только для столбцов, я не знаю, как его получить непустые значения всей строки.
'// здесь код, который я использовал для транспонирования отдельных компонентов с листа компонентов на лист калькулятора
Public Sub GetDistinctComponents()
Application.ScreenUpdating = False
Dim lr As Long
lr = Sheets("Components Data").Cells(Rows.Count, "F").End(xlUp).Row
Sheets("Calculator").Unprotect Password:="secret"
Sheets("Components Data").Range("F1:F" & lr).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=ActiveSheet.Range("DW1"), Unique:=True
With ThisWorkbook.Worksheets("Calculator")
.Range(.Range("DW1"), .Range("DW1").End(xlDown)).Copy
.Range("DX1").PasteSpecial xlPasteValues, Transpose:=True
.Columns("DW").EntireColumn.Delete
End With
Sheets("Calculator").Protect Password:="secret", DrawingObjects:=False
End Sub
Вот мой лист компонентов
А ниже мой лист калькулятора. как видите, код для транспонирования отдельных компонентов работает нормально. я просто не знаю, как получить значение строки 1, начиная с DX, чтобы я мог сохранить его в переменной, которую я буду использовать при подсчете количества раз, которое компонент появлялся за неделю. Я думаю, это должно go как этот Component = wsCalculator.Cells (i, "D"). Значение Но этот код работает, только если я хочу получить значения всех ячеек в столбце D, а не значения ячеек рядом с D1
и вот код, который у меня сейчас есть
Public Sub CountComponent()
Application.ScreenUpdating = False
Sheets("Calculator").Unprotect Password:="secret"
Set wsComponentData = Sheets("Components Data")
Set wsCalculator = Sheets("Calculator")
Dim ComponentCount As Integer
'//Get the index of the last filled row based on column A
LastComponentRowIndex = wsComponentData.Cells(Rows.Count, "A").End(xlUp).Row
'//Get Range for ComponentData
Set ComponentRange = wsComponentData.Range("F2:F" & LastComponentRowIndex)
'//Get the index of the last filled row based on column C
LasttotalauditRowIndex = wsCalculator.Cells(Rows.Count, "C").End(xlUp).Row
'//Get range for Calculator
Set MyRange = wsCalculator.Range("C2:C" & LasttotalauditRowIndex)
TotalCalls = WorksheetFunction.Sum(MyRange)
'//Looping through all filled rows in the Components Data sheet
For i = 2 To wsCalculator.Cells(Rows.Count, "A").End(xlUp).Row
'//Get Component from cell in column "DW"
'Component = wsCalculator.Cells(i, "DW").Value
'//Count the # of calls that got hit in the corresponding Component
If wsCalculator.Cells(i, "DW").Value <> "" Then
ComponentCount = Application.WorksheetFunction.CountIf( _
ComponentRange, component)
wsCalculator.Cells(i, "DX").Value = ComponentCount
End If
Next
End Sub