• ベストアンサー

セルの内容を分割する

どのようにしていいのか全くわからず困っています。 どうぞよろしくお願いします。 例 りんごR 5000 欠損 1000 みかんG 15000 ももZ 15000 でこぽん G 4000 欠損 2000 というデータがあるとします。 そのデータの中の りんごとでこぽんの欠損のデータを探し りんごR 5000 りんご欠損1000 みかんG 15000 ももZ 15000 でこぽんG 4000 でこぽん欠損2000 と表示させたいと思っています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

続けておじゃまします。 補足を読みました。 丸文字は環境依存文字になってしまいますので、 当方も以前丸文字で投稿した時にカッコ付きの数字になってしまいました。 さて、実際は丸文字で 1~3までなのでしょうか? もしそうであれば前回のコード内の >If buf Like "[A-Z a-z]" Then の部分を >If buf Like "[(1)-(3)]" Then ←丸文字数値を入力していますがおそらくカッコ付き数値で表示されると思います。 に変更してみてください。 ※ もっと大きい数値の丸文字がある場合、いくつまで対応できるか検証していませんが、 試しに(3)の部分を大きな数字の丸文字にしてやってみてください。m(_ _)m

orbmm
質問者

補足

何度もありがとうございました! 丸文字は3までしかないので、一度試してみます! 何度も丁寧にありがとうございましたm(__)m

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 投稿後、間違いに気づきました。 「欠損」の前に品名が表示されませんので、前回のコードは無視して ↓のコードに変更してください。 Sub Sample1() Dim i As Long, k As Long, str As String, buf As String, tmp, myArray str = "欠損" For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If InStr(Cells(i, 1), str) > 0 Then For k = 1 To Len(Cells(i, 1)) buf = Mid(Cells(i, 1), k, 1) If buf Like "[A-Z a-z]" Then tmp = Left(Cells(i, 1), k - 1) Exit For End If Next k myArray = Split(Cells(i, 1), str) Rows(i + 1).Insert With Cells(i, 1) .Value = myArray(0) .Offset(1) = tmp & str & myArray(1) End With End If Next i End Sub 何度も失礼しました。m(_ _)m

orbmm
質問者

補足

詳しくありがとうございます! 品名のあとが例では英大文字になっているのですが 実際は(1)、(2)、(3)の丸囲み数字です。 先ほどは変換がうまくできずに英大文字で書きました。 その場合は、[A-Z a-z]の部分が変わるのですか? 本当に何もかもわからずすいません。 よろしくお願いしますm(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 データはA1セルからあるとしています。 Sheetモジュールですので画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub Sample1() Dim i As Long, str As String, myArray str = "欠損" For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If InStr(Cells(i, 1), str) > 0 Then myArray = Split(Cells(i, 1), str) Rows(i + 1).Insert With Cells(i, 1) .Value = myArray(0) .Offset(1) = str & myArray(1) End With End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m

orbmm
質問者

補足

No.3でも詳しく回答いただきありがとうございます。 No.3の回答でも質問を書かせていただいたのですが、 うまく変換ができていなかったのでこちらに書かせていただきます。 丸囲み数字で、1~3なのですが、 なぜか(1)のようにかっこになってしまいます。 性格には丸囲み数字です。 よろしくお願いしますm(__)m

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

カテゴリがVBだけど、セルを分割ってことはExcelか何かの話? それとも、スプレッドとかグリッドとかVB上のコントロールでの話? データがあるのは分かったけど、それは変数上の話?それともファイル上の話?はたまたコントロール上の話?

orbmm
質問者

補足

わかりにくくてすみません。 りんごやももなど、くだものは毎回かわります。 伝票を作成するにあたって 元のデータが正規品と欠損品で同セルに表示されてしまうため、 伝票に転記させる時に くだものの種類と正規品、 くだものの種類と欠損品の別欄にマクロを使って表示したいと思いました。 よろしくお願いします。