Теперь я могу табулировать% после сопоставления значений из листа 1 с листом 2 с помощью Sid. Но сейчас я сталкиваюсь с этой проблемой,
Ниже приведено изображение проблемы, с которой я сталкиваюсь в настоящее время.
В Image1 это просто некоторые результаты теста, которые будут сведены в таблицу в%.
![enter image description here](https://i.stack.imgur.com/YQzns.png)
После большой помощи я теперь могу составить ее таблицу, но если вы заметите после столбца H, результат будет продолжать табулировать, потому что я установил параметры до столбца Z.
![enter image description here](https://i.stack.imgur.com/q1wev.png)
Я должен подготовиться к тестам с большим количеством столбцов, поэтому я установил значение для столбца Z. Мне интересно, возможно ли очистить все # DIV / 0! когда больше нет результатов?
Еще раз спасибо!
Продолжение:
Мой код как ниже:
Sub Macro3()
Dim ws As Worksheet
Dim wsData As String
Dim SearchText As String, Excludetext As String
Dim LastRow As Long, i As Long, j As Long
Dim MyArray() As String
Dim boolContinue As Boolean
'start making Yield_summary into %
'~~> Add/Remove the text here which you want to ignore
Excludetext = "Split,Grade,Wafer,temp,Qty. In,Qty. Out,Bin1,Bin2,Bin3,Bin4,Bin5,Bin6"
'~~> Change this to the relevant sheetname which has the data
wsData = "Sheet1"
MyArray = Split(Excludetext, ",")
Set ws = Sheets("Sheet2")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
'Set Column B into %
For i = 1 To LastRow
boolContinue = True
For j = 0 To UBound(MyArray)
SearchText = MyArray(j)
If ws.Range("A" & i).Value = SearchText Then
boolContinue = False
Exit For
End If
Next j
If boolContinue = True Then
With ws.Range("B" & i)
.Formula = _
"=OFFSET(INDIRECT(ADDRESS(INDEX(MATCH(A" & i & _
"," & wsData & "!$A$1:$A$50,0),1,0),1,1,TRUE,""" & _
wsData & """)),0,1)/" & wsData & "!B5"
.NumberFormat = "0.00%"
End With
End If
Next i
'Set Column C into %
For i = 1 To LastRow
boolContinue = True
For j = 0 To UBound(MyArray)
SearchText = MyArray(j)
If ws.Range("A" & i).Value = SearchText Then
boolContinue = False
Exit For
End If
Next j
If boolContinue = True Then
With ws.Range("C" & i)
.Formula = _
"=OFFSET(INDIRECT(ADDRESS(INDEX(MATCH(A" & i & _
"," & wsData & "!$A$1:$A$50,0),1,0),1,1,TRUE,""" & _
wsData & """)),0,2)/" & wsData & "!C5"
.NumberFormat = "0.00%"
End With
End If
Next i
End sub'