セルの書式設定が標準の状態で、F列の文字の転送をすると数値になってしまいます。
F列の書式設定を文字列にしてからマクロを実行します。
マクロの実行部の先頭に
Sheets(\u0026quot;データ\u0026quot;).Columns(\u0026quot;F:F\u0026quot;).NumberFormatLocal = \u0026quot;@\u0026quot;
を入れます。
具体的には、以下のようにします。
Sub マクロ①()
Dim data, str1, str2
Sheets(\u0026quot;データ\u0026quot;).Columns(\u0026quot;F:F\u0026quot;).NumberFormatLocal = \u0026quot;@\u0026quot;
data = Sheets(\u0026quot;データ\u0026quot;).Range(\u0026quot;A1\u0026quot;).CurrentRegion.Value
str1 = Array(\u0026quot;テスト①\u0026quot;, \u0026quot;システム\u0026quot;, \u0026quot;user name empty\u0026quot;)
str2 = Array(\u0026quot;空白\u0026quot;, \u0026quot;システムシート\u0026quot;, \u0026quot;空白\u0026quot;)
Dim i As Long
If UBound(data) \u0026lt; 2 Then Exit Sub
For i = 2 To UBound(data)
If InStr(data(i, 8), str1(0)) \u0026gt; 0 Then
data(i, 6) = str2(0)
ElseIf InStr(data(i, 8), str1(1)) \u0026gt; 0 Then
data(i, 6) = str2(1)
ElseIf InStr(data(i, 6), str1(2)) \u0026gt; 0 Then
data(i, 6) = str2(2)
End If
Next i
With Sheets(\u0026quot;データ\u0026quot;).Range(\u0026quot;A1\u0026quot;)
.CurrentRegion.ClearContents
.Resize(UBound(data), UBound(data, 2)).Value = data
End With
End Sub