Пожалуйста, проверьте следующий код. У меня нет ваших данных для обработки, и я сделал это только теоретически, без тестирования ...
Private Sub testConvert()
Dim actWork As Workbook, sheet1 As Worksheet, sheet2 As Worksheet
Dim data As Variant, i As Long, rownumber As Long, rng As Range
Set actWork = ActiveWorkbook
Set sheet1 = actWork.Sheets("Sheet1")
Set sheet2 = actWork.Sheets("Sheet2")
actWork.Activate
idForSearch = shee2.Range("B5").Value
data = sheet1.Range("B5:B7").Value 'not necessary to be activated
For i = 1 To UBound(data) 'in VBA such an array (created from a range) is 1 based...
If UCase(data(i,1)) = UCase(idForSearch) Then 'VBA is case sensitive
WriteLog i 'you must have a function ('WriteLog') able to do it...
rownumber = i
'if you have only one occurrence, it is good to exit the loop to save time (not for this specific case of 3 times):
Exit For
'If many occurrences may be, you just comment the line above...
End If
Next i
sheet1.Activate 'not necessary
Set rng = sheet1.Range("A" & rownumber & ":" & "C" & rownumber).Select
sheet2.Range("B5:B7").Value = WorksheetFunction.Transpose(rng.Value)
End Sub
Последние строки кода транспонируют горизонтальный диапазон sheet1
в диапазон столбцов sheet2
...
Я могу помочь вам в создании функции WriteLog
, если вы сообщите мне более подробную информацию: какой это тип журнала (текстовый файл), по тому пути, который будет создан, найден и т. Д. c. Вы хотите добавить, добавить значение i
или перезаписать существующее, если какое-либо значение уже записано?