ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者: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
この回答へのお礼素早い回答感謝!、ヒントになりました。
最新から表示回答順に表示良回答のみ表示