一定条件のみにbをつけ、行挿入したいです。

エクセル2010を使用しています。
①1列目にA00001~A10000と入力されています。末尾1にだけbをつけた文字を2列目に入力したいのです。
例:A00001b
  A00011b
A00021b
A00031b・・・
②1列めのbがついていない文字行の前に、2列目のにbがついている文字を挿入したいです。
例:A00001b
A00001
  A00002
A00003
ずっと続いて、
 A00011b
A00011
としたいのです。
どのようにすればよいか、教えていただけますでしようか。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2014/09/04 11:21:21
  • 終了:2014/09/08 08:53:57

ベストアンサー

id:NAPORIN No.1

なぽりん回答回数4646ベストアンサー獲得回数8512014/09/05 11:34:50

ポイント100pt

訂正します。1と2をつづけてやりたいということもわかりました。

<1だけを行う場合>

A列と空行であるB列があるとして、2列目に、任意の文字を入れます。全角スペース1個を一行目にいれたものをドラッグして全行にするとかでもいいですし、単にA行をコピペしてもいいです。A・B行をコピーしてワードの新規文書に「形式を選択して貼り付け」の「テキスト」で貼り、
CTRL+H をおして、オプションからワイルドカードを使用するにチェックをいれ

上欄に「1^t」
下欄に「1b^t」 

とすれば末尾1のセルにすべてbが追加されるとおもいます
はいったものをまたエクセルの2行に「形式を選択して貼り付け」「テキスト」で貼り、B行を消すと、1だけがおわった状態になるとおもいます。
 
<2もいっしょに行う場合>
なら、①と同様のやり方においてCTRL+Hの直後だけを変更します。
おなじようにオプションからワイルドカード使用にチェックを入れた上

上欄に「([0-9A-Za-z]{1,})1^t」
下欄に「\11^t^p\11b^t」

で同様にやれば、一度に一行にできるのでは。C列にはデータはないですね。
ただし、自分のとても古いワードのばあい、{1,}を抜かないとうまく動作しませんでした。
かといって抜くと追加行でA0000が無視されてしまいます。

==============

1にせよ、2にせよ、末尾1以外の文字を新しく作ったセルにコピペしないといけないですが、
その前の文字(末尾から2桁目だけ)は「コピーペースト」ができるのですが、
末尾以外の桁数が決まっていないものをとなると末尾1まで読みたくなってしまうのでダメのようです。
(種類が違う文字ならok)
もし、この例のように、全桁数が7ときまっているときは、
①については

上欄に「([0-9A-Za-z]{1,6})1^t」
下欄に「\11^t\11b^t」 

②については

上欄に「([0-9A-Za-z]{1,6})1^t」
下欄に「\11^t^p\11b^t」

でどうにかなるとおもいます。前ゼロがあって本当によかった。
桁数が決定されていないときはどうにもならないです。
もうすこしちゃんとしたマクロやphpでくまないといけません。

=========
6桁対応、1bつきを前行におきます。
これでどうなりましたか。
 

上欄に「([0-9A-Za-z]{1,5})1^t」
下欄に「\11b^t^p\11^t」
他5件のコメントを見る
id:ramumu1031

なぽりんさん、ありがとうございます。
まず教えていただいた方法で、全6桁なので{1,6})の部分の6→5に変更し実行したところ、B列にb付きが表示できるようになりました。ありがとうございました。
次の作業として、b表示できたものをbがついていないものの前に挿入したいのです。
A00001b
A00001
A00002
A00003
.
.
.
A00011b
A00011
のようにするには、B列のb付きのものだけを行挿入させるというマクロを組まないと表示できないのでしょうか?

2014/09/07 09:01:37
id:ramumu1031

なぽりんさん、ありがとうございました。完璧にできました。
本当にありがとうございました。

2014/09/08 08:51:45

その他の回答(1件)

id:NAPORIN No.1

なぽりん回答回数4646ベストアンサー獲得回数8512014/09/05 11:34:50ここでベストアンサー

ポイント100pt

訂正します。1と2をつづけてやりたいということもわかりました。

<1だけを行う場合>

A列と空行であるB列があるとして、2列目に、任意の文字を入れます。全角スペース1個を一行目にいれたものをドラッグして全行にするとかでもいいですし、単にA行をコピペしてもいいです。A・B行をコピーしてワードの新規文書に「形式を選択して貼り付け」の「テキスト」で貼り、
CTRL+H をおして、オプションからワイルドカードを使用するにチェックをいれ

上欄に「1^t」
下欄に「1b^t」 

とすれば末尾1のセルにすべてbが追加されるとおもいます
はいったものをまたエクセルの2行に「形式を選択して貼り付け」「テキスト」で貼り、B行を消すと、1だけがおわった状態になるとおもいます。
 
<2もいっしょに行う場合>
なら、①と同様のやり方においてCTRL+Hの直後だけを変更します。
おなじようにオプションからワイルドカード使用にチェックを入れた上

上欄に「([0-9A-Za-z]{1,})1^t」
下欄に「\11^t^p\11b^t」

で同様にやれば、一度に一行にできるのでは。C列にはデータはないですね。
ただし、自分のとても古いワードのばあい、{1,}を抜かないとうまく動作しませんでした。
かといって抜くと追加行でA0000が無視されてしまいます。

==============

1にせよ、2にせよ、末尾1以外の文字を新しく作ったセルにコピペしないといけないですが、
その前の文字(末尾から2桁目だけ)は「コピーペースト」ができるのですが、
末尾以外の桁数が決まっていないものをとなると末尾1まで読みたくなってしまうのでダメのようです。
(種類が違う文字ならok)
もし、この例のように、全桁数が7ときまっているときは、
①については

上欄に「([0-9A-Za-z]{1,6})1^t」
下欄に「\11^t\11b^t」 

②については

上欄に「([0-9A-Za-z]{1,6})1^t」
下欄に「\11^t^p\11b^t」

でどうにかなるとおもいます。前ゼロがあって本当によかった。
桁数が決定されていないときはどうにもならないです。
もうすこしちゃんとしたマクロやphpでくまないといけません。

=========
6桁対応、1bつきを前行におきます。
これでどうなりましたか。
 

上欄に「([0-9A-Za-z]{1,5})1^t」
下欄に「\11b^t^p\11^t」
他5件のコメントを見る
id:ramumu1031

なぽりんさん、ありがとうございます。
まず教えていただいた方法で、全6桁なので{1,6})の部分の6→5に変更し実行したところ、B列にb付きが表示できるようになりました。ありがとうございました。
次の作業として、b表示できたものをbがついていないものの前に挿入したいのです。
A00001b
A00001
A00002
A00003
.
.
.
A00011b
A00011
のようにするには、B列のb付きのものだけを行挿入させるというマクロを組まないと表示できないのでしょうか?

2014/09/07 09:01:37
id:ramumu1031

なぽりんさん、ありがとうございました。完璧にできました。
本当にありがとうございました。

2014/09/08 08:51:45
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912014/09/08 01:20:54

ポイント100pt

マクロの例で。

Sub Sample()
    Application.ScreenUpdating = False
    For r = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
        If Right(Cells(r, "A").Value, 1) = "1" Then
            Cells(r, "B").Value = Cells(r, "A").Value & "b"
            Rows(r).Insert
            Cells(r, "A").Value = Cells(r + 1, "B").Value
        End If
    Next
    Application.ScreenUpdating = True
End Sub
  • id:NAPORIN
    回答を再度訂正(というか後半を追記)しました。お手数ですが、試してつっかかるところがあればまたおしえてください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません