すみません、Excelを教えてください。
↓A1から文字列の項目が縦に並んでいます。先頭の数字(1: )を削除。文末の括弧付き数値をB列に移動したいと思っています。
1: ○○○○○○○○○(981)
2: △△(25)
3: □□□□□□(111)
↓
2500: ★★★★(1000)
2501: ☆☆☆☆☆☆☆☆☆☆☆☆(299)
置換削除のやり方を教えてください。
ワードで置換削除をやってみましたが、次の行の内容まで削除されてしまい困っています。
文字列の部分的なセル移動はできるでしょうか?
部分的な移動ができない場合、括弧付きの数値で並べ替え等をする方法は無いでしょうか?
No.9ベストアンサー
- 回答日時:
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」までしかありません。括弧の直前にはいろいろな数字や記号が来てしまうと思います。
文字列が数字にくっついてきてしまう誤変換は一つもありませんでした。
No.11
- 回答日時:
[回答番号:No.8この回答への補足]へのコメント、
》 ずいぶんあっさりとしたご回答ですが…
最初の質問に示された例が「ずいぶんあっさり」していたから、回答もそれで充分かと。情報の出し惜しみはやめませうね。(^_^)
置換削除のやり方も分からない状態から、みなさまの回答を実行し、その結果を順次ご報告申し上げました。
出し惜しみをしたのではありません。
#8様も、それ以前の回答者の回答があったから、ああした書き方ができたのだと思いますが?
いずれにしても、回答をいただきまして、ありがとうございました。一番短い計算式という点では最良の回答だと思いました。
Excelの機能を使った#1様の回答は「わたしでもまた使える」という点で最良だと思います。
最終的に問題解決まで導いてくださった#9様はもちろんベストアンサーです。
No.10
- 回答日時:
回答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&")",""))
No.7
- 回答日時:
#2,3です
ペーストは、B1セルに直接せずに、添付の図の位置にペーストして
その後に、Shift、Ctrlを押しながらEnterです。
B1が「#N/A」となっている場合は、同じく図の位置で、
左クリックしてからShift、Ctrlを押しながらEnter
あ、Excel2003です。
No.6
- 回答日時:
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(
元のデーターが整っていないとダメそうですね。
No.5
- 回答日時:
こんばんは!
参考になるかどうか分かりませんが・・・
↓のような表で説明させていただきます。
作業列として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
No.4
- 回答日時:
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!」になるセルがあります。
なにかうまい方法がありましたら、教えてください。
No.3
- 回答日時:
#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」と表示されています。
あとはなにをすればよいでしょうか?
No.2
- 回答日時:
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列で並べ替えをする
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Excel(エクセル) Excelの複数置換はSUBSTITUTEを重ねるしかない? 9 2022/05/08 11:25
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) Excelについて質問です(ver2019) 1 2023/06/30 21:20
- Visual Basic(VBA) 列を指定して値を左から5文字にそろえる 1 2022/06/10 20:28
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) VBA 文字列変換と指定した列にある日時データから時間を削除する方法について 2 2022/04/14 15:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
teams設定教えて下さい。 ①ビデ...
-
Microsoft 365 の一般法人向け...
-
outlookのメールが固まってしま...
-
Microsoft Formsの「個人情報や...
-
会社PCのメールが更新されない
-
会社におけるOfficeライセンス...
-
Outlook 電源OFFの受診の仕方
-
大学のレポート A4で1枚レポー...
-
MicrosoftOfficeについて質問で...
-
office365って抵抗感ないですか?
-
ドメイン購入をしたので同時に...
-
office2016のパソコン2台インス...
-
マイクロソフト 一時使用コード...
-
エクセルでXLOOKUP関数...
-
Excelのセルの重複チェックが出...
-
outlookで宛先が異なるメールを...
-
エクセルで英文字に入れた下線...
-
エクセル 表の移動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
【スプレッドシート】指定の日...
-
英数字のみ全角から半角に変換
-
会社PCのメールが更新されない
-
マイクロソフト 一時使用コード...
-
Office 2021 Professional Plus...
-
エクセルで例えば、関数を使っ...
-
Microsoft Formsの「個人情報や...
-
1つのPCに「Excel 2010」「Exc...
-
エクセルで例えば、A1に㈱ベ...
-
理由を教えてください。
-
エクセルでXLOOKUP関数...
-
マイクロソフト オフィスについて
-
VLOOKUP関数について
-
teams設定教えて下さい。 ①ビデ...
-
Googleのスプレッドシートでシ...
-
【Excel VBA】PDFを作成して,...
-
Microsoft365で写真をアルバム...
-
Outlook で宛先が複数の場合の人数
-
Excel テーブル内の空白行の削除
おすすめ情報