マクロについて教えてください。下記のことをやりたいのですが、この構文だとうまく動くのですが、F列の文字列になっている箇所がすべて数値になってしまいます。F列はもともと文字列と数値が混在しています。文字列は文字列のままにしたい(書式は変えたくない)のですが、どうしたらいいか教えてください。'H列:「テスト①」を抽出し、F列:以下に修正→「(空白)」'H列:「システム」を抽出し、F列:以下に修正→「システムシート」'F列:「User Name Empty」を以下に変更する。→「(空白)」Sub マクロ①()Dim data, str1, str2data = Sheets(\u0026quot;データ\u0026quot;).Range(\u0026quot;A1\u0026quot;).CurrentRegion.Valuestr1 = Array(\u0026quot;テスト①\u0026quot;, \u0026quot;システム\u0026quot;, \u0026quot;user name empty\u0026quot;)str2 = Array(\u0026quot;空白\u0026quot;, \u0026quot;システムシート\u0026quot;, \u0026quot;空白\u0026quot;)Dim i As LongIf UBound(data) \u0026lt; 2 Then Exit SubFor i = 2 To UBound(data)If InStr(data(i, 8), str1(0)) \u0026gt; 0 Thendata(i, 6) = str2(0)ElseIf InStr(data(i, 8), str1(1)) \u0026gt; 0 Thendata(i, 6) = str2(1)ElseIf InStr(data(i, 6), str1(2)) \u0026gt; 0 Thendata(i, 6) = str2(2)End IfNext iWith Sheets(\u0026quot;データ\u0026quot;).Range(\u0026quot;A1\u0026quot;).CurrentRegion.ClearContents.Resize(UBound(data), UBound(data, 2)).Value = dataEnd WithEnd Sub

1件の回答

回答を書く

1262711

2026-06-11 11:30

+ フォロー

セルの書式設定が標準の状態で、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

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有