• ベストアンサー

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

文書ファイルで 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

  • PHP&MySQLでの文字列+数列の一意の連番を生成するには?

    お世話になります。 PHP&MySQLでプログラムを勉強しています。 データを挿入する際にデータに連番を振ろうと思っています。その際に連番を1 2 3 4・・・というような連番ではなく、 hametome0000001 hametome0000002 hametome0000003 ・ ・ ・ ・ といったような(文字列+数列)連番にしたいと思っているのですが、MySQLのデータ型をauto incrementにして連番を振る場合では文字列+数列の連番が振れないようなので、どのようにすれば文字列+数列の連番を振れるのか分かりません。 よろしくご教授のほど、お願いいたします。

    • ベストアンサー
    • PHP
  • テキストファイル 文字列置き換え

    複数のテキストファイルを一括で別の連番のついた文字列に 置きかえることのできるソフトを探しています。 以下の3つの条件を満たすソフトはありますでしょうか? ・複数のテキストファイルを一括で置き換え可能 ・「何行目の文字列を置き換える」という指定が可能 ・置き換えた文字列に連番をつけることが可能 ご存知でしたら、ご教示ください。 よろしくお願いします

  • 関数を教えて下さい

    A列に数字の連番が1-1000まで入っています。この連番を利用し「1_1.jpg」という文字列を連番の数だけ作りたいです。連番が20なら「20_1.jpg」です。 よろしくおねがいします

  • 正規表現についての質問です

    たとえば abc="5565" def="546434" abc="4523" def="459473" abc="3454" def="796812" というようなabcとdefの値を表す文字列があります。 サクラエディタを使い、これらの中から abc="任意の数字"という文字列をを全て選択したいのですが、 なかなかうまくいきません。 どなたかやり方を知っておられましたら教えていただけませんか。 宜しくお願いします><

  • wsprintf関数(書式制御文字列)について

    wsprintf関数(書式制御文字列)について ActiveBasic 4.24.00を使用しています。 今回、wsprintf関数をつかって数列を4桁に整えたいのですが、 この関数の使い道がよく分かりません。 (大雑把に、何か規則どおりに文字列を整えるという意味で捉えている) 変数 n に数字(n=1,2,3,4,5,6・・・・・・)をForループで入れて行く途中で n=1のとき、0001 n=2のとき、0002 n=3のとき、0003 ・・・ n=10のとき、0010 n=11のとき、0011 ・・・ n=100のとき、0100 ・・・ このような感じにしたいのですが、使い方がまったく分かりません。 参考書(ABのオフィシャルユーザーガイド)などをみたら、 第二引数に、%dだの%s\%sだの、よく分からないものが書いてあります。 とりあえず、早急にしたいことは、 数列を4桁に整えることです。 もし余力がありましたら、%やdやsや\などの違いと、wsprintf関数の使い方の詳細も ご教授いただければ幸いです。 よろしくお願いします。

  • スプレッドシートで別シートからの自動記入は可能?

    恐れ入ります、スプレッドシートでかきのようなことはできるのでしょうか? セルに別Sheetで記載されているワードが記入されると、そのセル右横に自動的に複数の数字が記入されるようにすることは可能でしょうか? 以下、例です。 Sheet1 セルA1 セルA2 セルA3 セルA4 セルA5 Sheet2 ABCD-4-4-3-5-4-3-4-4-5 EFGH-4-5-4-3-4-5-3-4-4 HIJK-4-3-4-5-4-4-3-4-4 LMNO-4-5-3-5-3-4-3-5-4 PQRS-4-4-4-3-5-5-4-3-4 「Sheet1のセルA1」で「HIJK」と記入すると、Sheet2の「HIJK」右横の数字を下記のように自動で羅列させることは可能でしょうか? [Sheet1]のセルA1に「HIJK」と記入します。すると自動で、Sheet2の「HIJK」横の9つの数字が下記のように各セルに自動的に記入されます。 A-----B-C-D-E-F-G-H-I-J HIJK-4-3-4-5-4-4-3-4-4 ※便宜上、セルとセルの間が分かるように「-」を入れました。 どんなことでも結構ですので、何卒アドバイス頂きたくよろしくお願いいたします。

  • エクセルで末尾の空白を消したい

    文字列「AB CD  」という感じで文字間と末尾に空白が入っています。 これを文字列「AB CD」という風に末尾の空白だけを消したいのですが何か良い方法は無いでしょうか? 文字長は「ABC  DEF   」や「A BC 」などはマチマチです。 皆さんどうかよろしくお願いします。

  • 初めて質問させていただきます

    初めて質問させていただきます テキストファイル形式で、特定の文字数の区間を抽出したいのですが 良い方法はないでしょうか? 例えば、以下のような数字の列を取り扱っています 011110854684632 66632 016359563163565636323 01649266489 65264656 数列には全く規則性がないのですが、 数列の以下のような領域 0111「1085」4684632 「666」32 0163「5956」31635656「363」23 0164「9266」489 652「646」56 5-8番目の領域と17-19番目の領域のみ抽出したいです スクリプトでどうにかできるかもしれないのですが 知識がなく、困っています 数列の中にはランダムで半角スペースも含まれており それも1字とカウントして、目的の番目から何番目かを抽出したいです 各行に関しては同じ長さ(文字数)で、すべての行に対して○~○番目の抽出を行います お力添えを頂けると助かります よろしくお願いします

  • 隣りの列の文字を認識して連番を記入したい

    エクセル VBAで隣りの列の文字を認識して連番を記入するには どのようにすればよろしいでしょうか? 例えば、B列に文字や数字が適当にセルをあけて書いてあります。 この場合B列の文字や数字を認識して、文字、数字がある箇所のA列に 連番を記入するにはどのようにVBAのコードを記入すればよろしいでしょうか? (図を参照ください) 回答よろしくお願い致します。

  • 数字の入った文字列

    例えば、テキストファイルに以下のような文字列があるとき inoki11 inoki12 inoki13 inoki14 ogawa11 ogawa12 ogawa13 「sscanf」を用いて一行ずつよんで inoki11 inoki12 だけとりだしたテキストファイルを新たにつくりたいのですが、 そのとき、文字の部分と数字の部分を分けて考える必要があると 思うのです。 そこで、文字の部分は、文字列、数字の部分は数列と読み込みたいのですが それは可能でしょうか? 「strcmp」だとすべて文字列として読み込んでしまいますよね。 「strncmp」をうまく使えばできそうなのですが、 よく分かりません。 何かいい方法があれば教えてください。 お願いします。

専門家に質問してみよう