Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
セルの内容で区切り位置を判断したい
投稿日時: 18/05/11 11:54:37
投稿者: SHIBARAKU

いつもお世話になっております。
  
シート上のセルに以下の数値とアルファベットで構成したコードがあります。
 
コード
B0B034
B0C042
B0E142
B0E145
B0T006
B0Z002
B1A101
B1A102
B7B002
BJQ001
BKQ002
 
上記のようなコード体系を区切りたいのですが、
条件が
BJQ001
BKQ002
のように"JQ"と"KQ"が含まれているコードは、
B JQ 001
B KQ 002
といった区切りをしたく、それ以外の
B0E145
B0T006
といったコードは、
B0 E 145
B0 T 006
と区切ることは可能でしょうか。
以下のようにテスト記述したのですが、表示してくれません。
 
Dim gyo As Long
'
For gyo = 2 To 200
  If Cells(gyou, 1).Value = "*JQ" Then
        Selection.TextToColumns Destination:=Cells(gyou, 1).Value, DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(1, 1), Array(3, 1)), TrailingMinusNumbers:= _
        True
  Else
        Selection.TextToColumns Destination:=Cells(gyou, 1).Value, DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:= _
        True
  End If
Next gyo
 
どうかご教授よろしくお願いいたします。

投稿日時: 18/05/11 12:00:02
投稿者: SHIBARAKU

すみません。コードの張り間違えをしました。
 
Dim gyo As Long
'
For gyo = 2 To 200
  If Cells(gyo, 1).Value = "*JQ" Then
        Selection.TextToColumns Destination:=Cells(gyo, 1).Value, DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(1, 1), Array(3, 1)), TrailingMinusNumbers:= _
        True
  Else
        Selection.TextToColumns Destination:=Cells(gyo, 1).Value, DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:= _
        True
  End If
Next gyo

回答
投稿日時: 18/05/11 12:38:55
投稿者: よろずや

If Cells(gyo, 1).Value = "*JQ" Then
            ↓
If Cells(gyo, 1).Value Like "?[JK]Q*" Then
 
ではいかがでしょう。

回答
投稿日時: 18/05/11 13:27:56
投稿者: Suzu

VBAは万能ではありません。
 
Excelの操作で、手動で出来る事を 命令文を発行し自動化します。
なので、手動で出来ない事は出来ません。
 
Excelの余計なお世話のせいで
 
B JQ 001
B KQ 002
 
B0 T 006
 
これらできません。
 
3区切り目、それぞれ「1」「2」「6」になってしまいます。
 
Mid関数を使って区分するコードを自前で用意しましょう。
その際には、0で始まるセクションはきちんと 0から表示されるように、
セルの書式設定を文字列にしましょう。

投稿日時: 18/05/11 14:01:45
投稿者: SHIBARAKU

よろずやさん、 Suzuさん ありがとうございます。
よろずやさんの内容で、判断できました。
Suzuさんもありがとうございます。
Mid関数については、よろずやさんの内容で書き換えた時に気づき抽出できました。