質問 |
||
| 質問者:mabomk | 海外の化学品資料がEXCEL形式で入力済み | |
|---|---|---|
困り度:
|
英文の化学品名の前に(同一セルです)、「1」から「500」位の連番が入っています。実はこの化学品名だけを「ABC順」に並べ替えしたいのですが、前の数字が邪魔になって「ソーティング」が出来ません。この数字だけを取り除く技を、、、ご伝授下さい。 □□□□□□□□□□□□□□□□□□□ 117 O,O-Diacetyl-N-allyl-N-normorphine 118 Gvvvvvvvv Nxxxxxxxxx 119 Bzzzzzzzzzzzzzz Wpppppppp こんな感じです。 |
|
質問投稿日時:08/07/07 11:20 質問番号:4157593 |
||
回答 |
|
| 回答者:imogasi | 判ってないものには気づかないのだろうが、質問には 数字桁数が一定しないとか、 半角に限って出現するとか はっきり書くものです。 そうしないと解答が全く無駄になることがある。 例データ A列 B列(参考) C列 23df 2 df 1dfgh 1 dfgh 1234 4 234tyu 3 tyu 2wer34 1 wer34 rty2 0 rty2 124sdf 3 sdf 23あいう123 2 あいう123 B列には式=suu(A1)を入れてテスト表示したもの。 ーーー 最初の数字桁数を割り出すユーザー関数 suuを定義。 標準モジュールに Function suu(a) p = 0 For i = 1 To Len(a) If IsNumeric(Mid(a, i, 1)) Then p = p + 1 Else GoTo ext End If Next i ext: suu = p End Function 先頭部の全角数字文字列桁数も半角も同じように、都合よく導出してくれるようだ。 ーーーーーー C列には =RIGHT(A1,LEN(A1)-suu(A1)) と入れて下方向に式を複写。 数字の後に空白が無いとして。あればLEN(A1)-suu(A1)-1とか調節して。 結果 上記例のC列 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/07/07 13:55 回答番号:No.5 |
|
| この回答へのお礼 | 済みません、ユーザー関数なんて私にはとてもとても、でも、For,If,Else,Goto,Next,なんて昔々、遙か昔、Basicでよく見掛けたのを思い出しました、勿論、中身は全然(泣) 有り難うございました。自分の不明さを痛感! |
回答良回答20pt |
|
| 回答者:grumpy_the_dwarf | それだけだと1と書いてあるのか001と書いてあるのか不明でイヤン な感じだけど、幸いなことにどうも数字が終わると空白が入ってる みたいですね。これなら、文字列の中で空白の位置を探して、その 次の文字から最後までを返すような列を作ればいいでしょう。もち ろん、001とか028なんて3桁固定で記入してあれば、空白を探すなん て面倒くさいことをせず「5文字目から全部」でいいんです。 =mid(A1,search(" ",A1,1)+1,len(A1)) mid関数の最後の引数を元の文字列の長さにしてあるので、ちょっと やそっと長い試薬名でも末尾が切れたりはしません。 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| |
回答日時:08/07/07 11:40 回答番号:No.4 |
|
| この回答へのお礼 | 当方の説明不足を勘案してのご回答、正に完璧でした。有り難うございます。こちらの達人様達には脱帽です。 |
回答 |
|
| 回答者:hallo-2007 | 別の列に =MID(A1,5,100) 入れて下フィルしておけば 数字の部分を省いてくれますので その列を利用して並び替えてみてはいかがですか。 この数字だけを取り除く技 ならば 「データ」「区切り位置」のウイザードで スペースに・・・・ にチエックいれて 次へ でも大丈夫かと思います。 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/07/07 11:31 回答番号:No.3 |
|
| この回答へのお礼 | 001 002 003 100なら良いのですが、残念ですが、1 2 3 4 5 100なので、、、当初の説明不足で申し訳有りませんでした。 |
回答良回答10pt |
|
| 回答者:mu2011 | 次の方法は如何でしょうか。 データはA列、数値と文字列間に1文字のスペースがあるとしていますので無い場合は読み捨て下さい。 (1)別列(仮にB列)のB1に=MID(A1,FIND(" ",A1)+1,LEN(A1))を入力、下方向にコピー (2)B列の変換範囲を選択、コピー→A列のA1を選択→形式を選択して貼り付け→値にチェック→OK (3)B列を削除 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/07/07 11:29 回答番号:No.2 |
|
| この回答へのお礼 | うまく行きました。「値コピー」の件まで有り難うございました。うっかりするところでした。 |
回答 |
|
| 回答者:keirika | 品名が100文字を超えない事とA列に入力されている事を前提とします。 1.列を1つ追加します。 2.追加した列に=MID(A1,4,100)を入力します。 3.下方向へコピー。 4.追加列を基準に並び替えます。 以上です。 |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/07/07 11:28 回答番号:No.1 |
|
| この回答へのお礼 | 素早い回答感謝!、ヒントになりました。 |