• ベストアンサー

置き換えで順番の数列にしたい

文書ファイルで ab★c★def★g★hijk★l★mn★o の様に文字列の間に特定の文字が入ってる(今回は便宜上★にします)文書ファイルがあります。 この★の部分を数列に置き換えたいのですが、 全部が同じ数字ではなく、 一個めの★は001、二個めの★は002と言う風に連番で置き換えたいです。 ★と★の間の文字列は同一ではありませんし、規則性はありません。 ワードかエクセルで簡単にできないでしょうか? できるソフトの紹介でも構わないので教えてください。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.2

添付図参照 セル A2 に次式を入力して、此れを下方にズズーッとドラッグ&ペースト =IF(SUBSTITUTE(A1,"★",TEXT(ROW(A1),"000"),1)=A1,"",SUBSTITUTE(A1,"★",TEXT(ROW(A1),"000"),1))

jony798
質問者

お礼

回答ありがとうございました。 簡潔かつ図でわかり易く説明して頂きましてありがとうございます。 一番最初にやってみてそのまま成功しましたし、式の内容も良くわかりました。 BAをお受け取り下さいませ。

その他の回答 (2)

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

こんばんは! VBAになってしまいますが・・・ 一例です。 Sheet1のA列の1行目から元データがあり、Sheet2のB列に表示するようにしてみました。 尚、Sheet2を作業用のSheetとして使用していますので、Sheet2には何もデータが入っていないという前提です。 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j, M As Long Dim str As String Dim myArray As Variant Dim ws As Worksheet Set ws = Worksheets("Sheet2") str = Application.InputBox("置換文字を入力してください。") Application.ScreenUpdating = False Columns(2).ClearContents For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If InStr(Cells(i, 1), str) Then myArray = Split(Cells(i, 1), str) For j = 0 To UBound(myArray) ws.Cells(i, 2 * j + 1) = myArray(j) Next j End If Next i For i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To ws.Cells(i, Columns.Count).End(xlToLeft).Column If WorksheetFunction.CountA(ws.Rows(i)) Then If ws.Cells(i, j) = "" Then M = M + 1 str = M With ws.Cells(i, j) .NumberFormatLocal = "@" .Value = Application.Rept("0", 3 - Len(str)) & str End With End If End If Next j Next i For i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To ws.Cells(i, Columns.Count).End(xlToLeft).Column Cells(i, 2) = Cells(i, 2) & ws.Cells(i, j) Next j Next i ws.Cells.Delete Application.ScreenUpdating = True End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

jony798
質問者

お礼

回答ありがとうございました。 できるかもしれませんが、言わんとする事が私の力では理解不能でした;;

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

エクセルを使って作業をします。 お示しの文字列がA列は空のままでB1セルにあるとします。 文字列の中に★印をコピーします。その後に「データ」タブの「区切り位置」を選択します。 表示の画面で「カンマや…」にチェックの付いた状態で「次へ」をクリック、その他の窓には貼り付けによって★を入力して「次へ」「完了」と進みます。これで文字列がI1セルまでに分割されて表示されます。 次に2行目は書式設定で表示形式を「文字列」にします。その後にB2セルに001と入力してH2セルまでドラッグコピーします。連続した数値の文字列が表示されますね。 次にはB3セルには次の式を入力して右横方向にドラッグコピーします。 =IF(COLUMN(A1)>COUNTA($B$1:$I$2),"",A3&INDEX($B$1:$I$2,MOD(COLUMN(A1)-1,2)+1,ROUNDUP(COLUMN(A1)/2,0))) これで文字列が表示されている最後の列のセル幅(P3セル)を広げることでお求めのデータが表示されます。 これをコピーしてから表示させたいセルを選択して「表示形式を選択して貼り付け」で「値」にチェックをして貼り付けをすればよいでしょう。

jony798
質問者

お礼

回答ありがとうございました。

関連するQ&A

専門家に質問してみよう