• ベストアンサー

エクセルでの住所表示について

たとえば、A1に東京都港区六本木6-10-1、A2に東京都港区赤坂3とデータが入っています。これをすべてハイフン以降を抜いた丁目までの 表示にしたいと思っています。(「丁目」の表示はいりません) 今は「=MID(A1,1,(SEARCH("-",A1)-1))」という関数を使っていますが、大量のデータにまとめて関数をかけるので、ハイフンのないA2はエラー表示になってしまいます。 そこで、ハイフンのあるものは上の関数の計算をして、ハイフンのない データは元のデータを返すようにしたいのですが、どうしたらいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.8

NO1です。 >でもこれだと、A1=東京都港区六本木6101になってしまいます。 ⇒恐縮です。(ハイフンの全角、半角対応)  =IF(ISERROR(FIND("-",ASC(A1))),A1,LEFT(ASC(A1),FIND("-",ASC(A1))-1))

taspa
質問者

お礼

できました~! 使わせていただきます。 再度対応していただいてありがとうございました。

その他の回答 (8)

noname#140971
noname#140971
回答No.9

失礼:ハイフォンの手前まででしたか・・・。 [イミディエイト] ? CutStr("東京都港区赤坂3", "-", 1) 東京都港区赤坂3 ? CutStr("東京都港区六本木6-10-1", "-", 1) 東京都港区六本木6 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function と、そのような場合は、このようにハイフォンを加えてエラーを回避。 で、 =LEFT(A1,SEARCH("-",A1&"-")-1) No6さんの手法を私も採用。

taspa
質問者

お礼

ありがとうございました。 No8さんを使わせていただきますが、 教えていただいて有難うございました。

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.7

訂正します >SEARCH関数の検査値に「-」があればいいので SEARCH関数の対象文字に「-」があればいいので

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.6

エラー処理としては =IF(COUNTIF(A1,"*-*")<>0,LEFT(A1,SEARCH("-",A1)-1),A1) とか =IF(ISERROR(SEARCH("-",A1)),A1,LEFT(A1,SEARCH("-",A1)-1)) で良いと思いますが 今回の場合「-」がないためエラーとなるので SEARCH関数の検査値に「-」があればいいので =LEFT(A1,SEARCH("-",A1&"-")-1)

noname#140971
noname#140971
回答No.5

補足:番地が半角だと仮定して・・・。 この仮定が常に成り立つ工夫は可能だと思います。 東京都港区六本木116-10-1 もあるでしょうからハイフォンの位置では・・・。 それなら、むしろ数字の開始位置を・・・。 LEN方式以外ですと・・・。

回答No.4

=IF(COUNTIF(A1,"*-*")<>0,(MID(A1,1,(SEARCH("-",A1)-1))),A1) はいかかがでしょう。 ただしハイフンの半角、全角が一致していないとだめですが。

noname#140971
noname#140971
回答No.3

番地が半角だと仮定して・・・。 東京都港区赤坂3 ----+----!----+ <--- 15バイト -------- <--- 8文字 ですから7文字を抽出すればいいですね。 =MID(A1, 1,LENB(A1)-LEN(A1)) で、可能だとおもいます。 Q、データは元のデータを返すようにしたいのですが、どうしたらいいでしょうか? A、割愛。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

IF文で切り分け。 =IF(ISERROR(SEARCH("-",A1)),A1,MID(A1,1,(SEARCH("-",A1)-1))) とか?

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。(ハイフンの全角、半角に対応) =SUBSTITUTE(SUBSTITUTE(A1,"-",""),"-","")

taspa
質問者

補足

有難うございます。 でもこれだと、A1=東京都港区六本木6101になってしまいます。 A1=東京都港区六本木6、A2=東京都港区赤坂3という表示を 1つの関数で出来ないかと思ってるんですが…

関連するQ&A

専門家に質問してみよう