アプリ版:「スタンプのみでお礼する」機能のリリースについて

すみません、Excelを教えてください。
↓A1から文字列の項目が縦に並んでいます。先頭の数字(1: )を削除。文末の括弧付き数値をB列に移動したいと思っています。

1: ○○○○○○○○○(981)
2: △△(25)
3: □□□□□□(111)

2500: ★★★★(1000)
2501: ☆☆☆☆☆☆☆☆☆☆☆☆(299)

置換削除のやり方を教えてください。
ワードで置換削除をやってみましたが、次の行の内容まで削除されてしまい困っています。

文字列の部分的なセル移動はできるでしょうか?
部分的な移動ができない場合、括弧付きの数値で並べ替え等をする方法は無いでしょうか?

A 回答 (11件中1~10件)

B1セルには


=IF(A1="","",MID(A1,FIND(":",A1)+1,FIND("(",A1)-FIND(":",A1)-1))
C1セルには
=IF(A1="","",IF(ISNUMBER(VALUE(MID(A1,LEN(A1)-4,1))),MID(A1,LEN(A1)-4,4),IF(ISNUMBER(VALUE(MID(A1,LEN(A1)-3,1))),MID(A1,LEN(A1)-3,3),IF(ISNUMBER(VALUE(MID(A1,LEN(A1)-2,1))),MID(A1,LEN(A1)-2,2),IF(ISNUMBER(VALUE(MID(A1,LEN(A1)-1,1))),MID(A1,LEN(A1)-1,1),"")))))
をそれぞれ入力して、B1セルおよびC1セルを選択してそれぞれの式を下方にオートフィルドラッグします。
なお、C1の式では最後に書かれるカッコ内の数値が4桁までに対応しています。5桁もあるのでしたらその分を考慮した式にしてください。

この回答への補足

ありがとうございます。ほぼ完璧に変換されました<m(__)m>
ずいぶん長い計算式を作らないとできない作業だったのですね。

誤変換はたぶん「括弧の直前に数字か半角記号があるデーター」だと思います。
「4桁まで対応している」とおっしゃる部分だと思います。

○○12(4)→12(4
○○2(255)→2(25
○○213(500)→3(50
○○2000!(1000)→0!(1

括弧内の数字は「1-1000」までしかありません。括弧の直前にはいろいろな数字や記号が来てしまうと思います。

文字列が数字にくっついてきてしまう誤変換は一つもありませんでした。

補足日時:2009/07/19 12:28
    • good
    • 0

[回答番号:No.8この回答への補足]へのコメント、



》 ずいぶんあっさりとしたご回答ですが…

最初の質問に示された例が「ずいぶんあっさり」していたから、回答もそれで充分かと。情報の出し惜しみはやめませうね。(^_^)
    • good
    • 0
この回答へのお礼

置換削除のやり方も分からない状態から、みなさまの回答を実行し、その結果を順次ご報告申し上げました。
出し惜しみをしたのではありません。

#8様も、それ以前の回答者の回答があったから、ああした書き方ができたのだと思いますが?
いずれにしても、回答をいただきまして、ありがとうございました。一番短い計算式という点では最良の回答だと思いました。

Excelの機能を使った#1様の回答は「わたしでもまた使える」という点で最良だと思います。
最終的に問題解決まで導いてくださった#9様はもちろんベストアンサーです。

お礼日時:2009/07/19 21:01

回答No9です。


後からこんなケースもあると具体的に提示されては、対応に苦慮します。
C1セルには次の式を入力して下方にオートフィルドラッグすればよいでしょう。
=IF(A1="","",IF(ISNUMBER(VALUE(MID(A1,LEN(A1)-4,4))),MID(A1,LEN(A1)-4,4),IF(ISNUMBER(VALUE(MID(A1,LEN(A1)-3,3))),MID(A1,LEN(A1)-3,3),IF(ISNUMBER(VALUE(MID(A1,LEN(A1)-2,2))),MID(A1,LEN(A1)-2,2),IF(ISNUMBER(VALUE(MID(A1,LEN(A1)-1,1))),MID(A1,LEN(A1)-1,1),"")))))
B1セルには次の式を入力し下方にオートフィルドラッグします。
=IF(A1="","",SUBSTITUTE(MID(A1,FIND(":",A1),20),"("&C1&")",""))
    • good
    • 0
この回答へのお礼

ありがとうございました。完璧です。
ほぼ完璧だったので、ついワガママを言って申し訳ありませんでした。

お礼日時:2009/07/19 17:50

B2: =MID(A2,FIND("(",A2),9)

この回答への補足

ありがとうございます。
ずいぶんあっさりとしたご回答ですが、できました(笑)
作業用の列も要らないんですね。

でもやっぱり、データーが整っていない行は無理そうですね。
末尾の(数字)だけ取り出せないかな。

1: ○○○○○○○(○○)(981)

○○○○○○○ |(○○(9

補足日時:2009/07/19 12:03
    • good
    • 0

#2,3です


ペーストは、B1セルに直接せずに、添付の図の位置にペーストして
その後に、Shift、Ctrlを押しながらEnterです。

B1が「#N/A」となっている場合は、同じく図の位置で、
左クリックしてからShift、Ctrlを押しながらEnter

あ、Excel2003です。
「Excelの置換」の回答画像7

この回答への補足

画像付きでご回答ありがとうございます。
やってみましたが、今度は「#REF!」となりました。2007だと違うんでしょうか。

補足日時:2009/07/19 12:13
    • good
    • 0

No.5です!


何度もごめんなさい。

投稿した後でもう一度他の方の方法を参考させてもらおうと
回答を読ませてもらったところ

>文字列はA2から入っています

>A列に21文字以上のセルがあると正しい結果が得られませんでした

という内容がありましたので
補足させていただきます。

前回のC1セルの数式の
ROW($A$1:$A$30) という部分はどの行に数式をいれても1から始めてください。

尚 A30 というのは30文字まで対応できます。
それ以上の文字数の場合は行数を増やせばOKです。

どうも何度も失礼しました。m(__)m

この回答への補足

ありがとうございます。
ROW($A$1:$A$255)でやってみました。
教えていただいた計算式ですと、↓このような文字列を次のように変換してしまうようです。

○○○○○○○○○(23) (981)

○○○○○○○○○ | (23(

元のデーターが整っていないとダメそうですね。

補足日時:2009/07/19 11:57
    • good
    • 0

こんばんは!


参考になるかどうか分かりませんが・・・
↓のような表で説明させていただきます。

作業列としてB列を使い、B列を参照してC列に表示させるようにしています。

B1セル =IF(A1="","",SUBSTITUTE(A1,LEFT(A1,FIND(":",A1)),""))

C1セルは配列数式になりますので
↓の数式をコピー&ペーストした後に
F2キーを押すか、数式バー内で一度クリックして編集可能にした後に
Shift+CtrlEnterキーを押してください。

=IF(B1="","","("&MID(B1,MATCH(TRUE,ISNUMBER(MID(B1,ROW($A$1:$A$30),1)*1),0),COUNT(MID(B1,ROW($A$1:$A$30),1)*1))&")")

数式の前後に{ } が入りますので配列数式になります。

B1・C1セルを範囲指定した後に、オートフィルで下へコピーするか
又は、オートフィルの(+)のハンドルでダブルクリック

これで希望に近い形にならないでしょうか?

尚、B列を削除してしまうと、参照相手がなくなりエラー表示になりますので、
C列すべてを範囲指定 → B1セルを選択 → 形式を選択して貼り付け
→「値」にチェックを入れて OK

以上、参考になれば幸いですが、
他に良い方法があれば読み流してくださいね。m(__)m
「Excelの置換」の回答画像5
    • good
    • 0

B列に中の文字列を、C列に括弧の中の数値を表示させるとして、


B1セルには
=IF(A1="","",MID(A1,FIND(":",A1)+1,FIND("(",A1)-FIND(":",A1)-1))
C1セルには
=IF(A1="","",MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIND("(",A1)-1)*1)
をそれぞれ入力して、B1セルおよびC1セルを選択してそれぞれの式を下方にオートフィルドラッグします。

この回答への補足

ありがとうございます。できました。
ですがやはり、#1の方に補足した不都合なデーターのせいで、C列が「#VALUE!」になるセルがあります。
なにかうまい方法がありましたら、教えてください。

補足日時:2009/07/18 19:33
    • good
    • 0

#2です。

補正というか訂正です。
=1*MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$256),1)),0),COUNT(1*MID(A1,ROW($1:$256),1)))
#2では「$20」が2箇所ありましたが、訂正では「$256」に変えました。
ここは、A列の最大文字数を指定していますので、#2のままでは
A列に21文字以上のセルがあると正しい結果が得られませんでした。

この回答への補足

ありがとうございます。
WindowsXP Excel2007です。

=1*MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$256),1)),0),COUNT(1*MID(A1,ROW($1:$256),1)))
これをB1にコピペして、shift+enterでよいでしょうか?
この段階でB1セルに「#N/A」と表示されます。
このとき、A1セルは空白です。文字列はA2から入っています。

B1セルをドラッグして一番下までコピーしても、全部のセルで「#N/A」と表示されています。
あとはなにをすればよいでしょうか?

補足日時:2009/07/18 19:28
    • good
    • 0

B1のセルに


=1*MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$20),1)),0),COUNT(1*MID(A1,ROW($1:$20),1)))
を入力して(コピペ可)ShiftとCtrlを押しながらEnter
B1セルをB2からB2501にコピー
シート全体をB列で並べ替えをする
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!