人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: ramumu1031
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● なぽりん
●100ポイント ベストアンサー

訂正します。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」

ramumu1031さんのコメント
なぽりんさん、ご回答いただきましてありがとうございます。 ?のご教示いただいた方法をいたしましたところ、[置換後の文字列に指定できない範囲の番号が含まれています]と表示が出てしまいます。なので、置換ができず、作業がその先に進めません。どうしたらよいのでしょうか? ?の質問の仕方がわかりずらかったようで、申し訳ありません。 2列めでA00001b、A00011bと作成したものを、A00001の前にA00001bを入れる。A00002やA00003など末尾1以外のものにはbをつけていないので、bがついている数字のみを対象とし、bがついているものを行挿入で前に入れたいのです。 この説明でわかりますでしょうか? ちなみに、C列以降にデータはありません。

なぽりんさんのコメント
大分つっかかるところを含んでいたので回答本文を大幅に訂正しました。 1だけが動くようなら2もいっしょに試してみてください。

ramumu1031さんのコメント
なぽりんさん、訂正ご回答いただきましてありがとうございます。 まず1は、上手く実行できました。C列に末尾1のものだけ1bと表示されることができました。 しかし、2を実行したところ、検索条件に一致するものは見つかりませんでした。と表示されてしまい、残念ながらそれ以降の作業が進みません。置換する前に次を検索としてみたのですが、上欄に「([0-9A-Za-z]{1,})1^t」の指定に問題があるようなのです。なぽりんさんが、{1,}を抜くと・・・と記載がありましたので、試してみたところ、下記のような状態になってしまいます。 A00001 01b A列に01b,011b,021bというようにA000が抜けてしまいます。 順番も、bがついてものがついていないものの下に表示されてしまいます。 A列の前に特殊文字も試してみたのですが、やはり検索条件に一致するものは見つかりませんでした。と表示されてしまいます。 どこを修正したらよろしいのでしょうか。教えていただけませんでしょうか。 よろしくおねがいいたします。

ramumu1031さんのコメント
追記訂正いたします。 1の作業でC列に末尾1bが表示されるとしましたが、A列にA00001の上書きでA00001bが表示されています。なので、A00001bの下行にはA00002となってしまい、A00001がなくなってしまいます。うまく伝わりましたでしょうか?

なぽりんさんのコメント
例題のように桁数が7と決まっているときだけなら使える方法ということで追記しました。

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

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

2 ● Mook
●100ポイント

マクロの例で。

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
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ