dポイントプレゼントキャンペーン実施中!

セルA1:12カローラ



セルB1:12 C1:カローラ

にしたいのですが可能でしょうか?

よろしくお願い申し上げます。
 

A 回答 (8件)

数字の桁とかは規則性はありますか?



規則性があって必ず先頭から二桁が数字なら、
=LEFT(A1,2)
で数字を抜き出し、続いて
=MID(A8,3,LEN(A8)-2)
で文字を抜き取ります。

もしも数字の桁数に規則性がないなら、もう一度
内容を補足して下さい。
    • good
    • 5
この回答へのお礼

ありがとうございました。
規則性があり必ず二桁が数字ですので完璧です。

お礼日時:2007/07/14 07:48

◆数字+カタカナ であれば


B1=LOOKUP(10^10,LEFT(A1,COLUMN(1:1))*1)
C1=SUBSTITUTE(A1,B1,)

◆数字+カタカナ+数字 で
★カタカナの前の数字の抽出
B1=LOOKUP(10^10,LEFT(A1,COLUMN(1:1))*1)
★カタカナのみ抽出(ただし、カタカナは連続していることが条件です)
C1=LEFT(REPLACE(A1,1,MIN(INDEX(FIND(CHAR(ROW($9506:$9587)),A1&CHAR(ROW($9506:$9587))),))-1,),SUMPRODUCT(--(CHAR(ROW($9506:$9587))=MID(A1,COLUMN(1:1),1)))+SUMPRODUCT(--("ー"=MID(A1,COLUMN(1:1),1))))

★数字+カタカナ+数字 から、カタカナを除いた数字
B1=RIGHT(SUM(MID(0&A1,LARGE(IF(ISERR(-MID(A1,ROW($1:$50),1)),,ROW($1:$50)),ROW($1:$14))+1,1)*10^(ROW($1:$14)-1),10^14),MIN(14,COUNT(-MID(A1,ROW($1:$50),1))))
★この式は「配列数式」です。式を入力後、Ctrl+Shift+Enter をおして、式を確定させてください。
★確定すると、式の両端に{ }がつきます。
    • good
    • 0

#1,#2の回答者様も書かれていますように、この問題は、なんらかの条件設定が必要です。


例えば、数字の部分が固定長(2桁とか、3桁とか決まりがある)ならば、#1様の回答が簡潔ですし、#2様が書かれてる条件におきましては、#2様の回答が適切でしょう。

私なりにご質問の意図を、「文字列(例:12カローラ)の先頭から、数字が続く限りはその数字(例:12)をB1セルに記述し、数字ではない文字が現れた時点で、残りの文字列(例:カローラ)をC1セルに記述する」と解釈致しました。

その解釈に基づいて、以下ではExcelのユーザ関数を紹介します。
下のユーザ関数'NumLen'というのは、先頭から続く数字の桁数を返すものです。
ユーザ関数の具体的な作成につきましては、参考URLなどを参考になさってください。

Public Function NumLen(sSrc)
 Dim i As Integer
 Dim iLen As Integer

 iLen = Len(sSrc)
 For i = 1 To iLen
  If IsNumeric(Mid(sSrc, i, 1)) = False Then
   Exit For
  End If
 Next
 NumLen = i - 1
End Function

これをVisualBasicEditorで作成した後、

B1セルに、
=LEFT(A1,NumLen(A1))

C1セルに、
=RIGHT(A1, LEN(A1)-NumLen(A1))

と入力してください。

以上です、とダラダラ参考意見を書いていますうちに、#4様によって簡潔な回答がなされていました。
#4様の回答は、私と同様の解釈によるものです。
わざわざユーザ関数を作成するより、ずっと簡潔です!

ただ一点、C1セルにSUBSTITUTE(A1, B1, "")を用いますと、下記の場合に不具合が発生します。
例:A1=12カローラ1200と入力しますと、B1には、"12"、C1には、"カローラ00"と表示されてしまいます。
ですので、C1セルにはSUBSTITUTEを用いない方がいいでしょう。

参考URL:http://www.excel.studio-kazu.jp/lib/e1iw/e1iw.html
    • good
    • 1

B1=LOOKUP(10^10,LEFT(A1,COLUMN(1:1))*1)


C1=SUBSTITUTE(A1,B1,)
    • good
    • 3

例データ


123カローラ   3
13746クラウン5
123567ロゴ6
2345セルシオ4
前半部の数字桁を割り出し。
全角数字も1桁と考える点で、#2の条件より広がっている。
しかし後半部に数字が来ると狂う。
=SUM(IF((MID(JIS($A1),ROW(A$1:A$10),1)>="0")*(MID(JIS($A1),ROW(A$1:A$10),1)<="9")*(MID(JIS($A1),ROW(A$1:A$10),1)<>""),1,0))
と入れて、SHIFT+CTRL+ENTERの3つのキーを同時押し。配列数式。
結果
上記のとおり。
ややこしい式ですみません。
小生は、配列数式男ですので。
もう少し簡単な式が以前出ていたように思いますが思い出せない。
ーー
VBAでユーザー関数を作る方が簡単なようです。
    • good
    • 1

B1: {=LEFT(A1,MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>="A",0)-1)} (配列数式)


C1: =SUBSTITUTE(A1,B1,"")
    • good
    • 0

C1=MID(A1,LENB(JIS(A1))-LENB(A1)+1,99)


コピペのミスがありました。
    • good
    • 0

条件1=数字が半角である。


条件2=文字列が全角である。
条件3=数字+文字列である。

以上の3条件が確実であれば、全体を全角に変換した時のバイト差を利用できます。

B1=LEFT(A1,LENB(JIS(A1))-LENB(A1))
C1=LEFT(A1,LENB(JIS(A1))-LENB(A1))

A1_____________B1_______C1
12カローラ_____12_______カローラ
    • good
    • 1
この回答へのお礼

ありがとうございました。
勉強になります。

お礼日時:2007/07/14 07:49

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

このQ&Aを見た人はこんなQ&Aも見ています