Please see below code. It may not be perfect but it is working based on your data sample in the OP. It is based on chr(34) which is the code for ".
Sub RepStr()
Dim lastrow As Long
Dim srchList As Worksheet
Dim mainList As Worksheet
Dim sStart As Long
Dim sStop As Long
Dim sValue As String
Dim pStart As Long
Dim pSttop As Long
Dim pValue As String
Set srchList = Sheets("Sheet8") '<- Sn Pn list
Set mainList = Sheets("Sheet7") '<- String List
lastrowMain = mainList.Range("A" & Rows.Count).End(xlUp).Row
lastrowsrch = srchList.Range("A" & Rows.Count).End(xlUp).Row
i = 1
While i <= lastrowMain
'Code based on your string is located at Column A of mainList
sStart = InStr(5, mainList.Range("A" & i).Value, Chr(34)) + 1
sStop = InStr(sStart + 1, mainList.Range("A" & i).Value, Chr(34))
sValue = Mid(mainList.Range("A" & i).Value, sStart, sStop - sStart)
pStart = InStr(InStr(1, mainList.Range("A" & i).Value, "PI"), mainList.Range("A" & i).Value, Chr(34)) + 1
pStop = InStr(pStart + 1, mainList.Range("A" & i).Value, Chr(34))
pValue = Mid(mainList.Range("A" & i).Value, pStart, pStop - pStart)
'Code based on your matching values are located at srchList Column A (S values), Column B (P values)
For j = 1 To lastrowsrch
If srchList.Range("A" & j).Value = sValue And srchList.Range("B" & j).Value = pValue Then
mainList.Range("A" & i).Value = Replace(mainList.Range("A" & i).Value, 0.7, 0.5)
End If
Next j
i = i + 1
Wend
End Sub