こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SUBSTITUTEについて※複雑です

RIGHT(SUBSTITUTE(A1,B1,""),3)

   A     B
1 1508080  080


上記の様な関数を使用して、
右から4~6桁目の数字を取り出しています。
今までちゃんと出来ていたのですが、
A1に「1508080」という数字が入ったときに、
「508」を取り出したいのですが、
結果が「080」となってしまいました。

SUBSTITUTEの計算で、右からではなく、
左から080を抽出しているんだと思いますが、
どうすれば結果が「508」になるのでしょうか?

説明が下手ですみません。

投稿日時 - 2006-01-26 17:07:54

QNo.1922832

困ってます

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

よくわかりませんが、
「右から4~6桁目の数字」を取り出すなら

=LEFT(RIGHT(A1,6),3)*1
とか

=IF(LEN(A1)<6,"",LEFT(RIGHT(A1,6),3)*1)

ではダメなんでしょうか?

結果が文字列でいいなら、*1 は不要です。

投稿日時 - 2006-01-26 17:33:22

お礼

文字列でも大丈夫です。
=LEFT(RIGHT(A1,6),3) で解決しました。
どうもありがとうございました。

投稿日時 - 2006-01-27 14:54:55

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.8

#7さん、こんにちは。

回答者どうしでのこのような質疑応答は、たぶん削除対象になりますが、この先のために、少し説明をさせていただきます。

私は自分の回答を作って載せる段になって、#4さんのご指摘は、ハッとさせられました。

あなたの回答が、間違いとかではありません。#4さんのご指摘には「是非がない(正しい・間違いない)=事実だ)」ということです。その意味は、「あれこれ話を盛り上げていっても、最初から、質問者の反応がなければ、それは、端に『右から4~6桁目』という回答しかないのだ」という意味に受け取りました。

つまり、今、自分の回答を載せても意味がない、ということです。

元のご質問の中に、

>   A     B
>1 1508080  080

>右から4~6桁目の数字を取り出しています。
>今までちゃんと出来ていたのですが、

で、きちんと、A1,B1 の取り出しの関係に、ご質問者は、その説明をされていません。最初に発言されたあなたと、#4さんの間には、時間的な経過があります。

あなたは、「ダメなんでしょうか?」と聞いておられます。しかし、質問者の応答なしで、話を進めていって、回答が一人歩きしているに過ぎないということです。しょせん、元の質問者の反応なくしては、この種のものは、知恵を凝らして、スレッドを進めても実りは少ないということを端的に書いただけのことです。

こういうのは、あまり説明をすると価値が減ってしまいますが、分る人には分るということなのでしたが。(^^;。お気を悪くされたのでしたら、申し訳ありません。別に、誰それの回答が正しいとか間違いとかではないのです。

投稿日時 - 2006-01-27 14:12:43

お礼

仕事中の投稿の為、お礼が遅くなり
ことが大きくなってしまってびっくりしています。

>A1,B1 の取り出しの関係
ですが、B1は右から1~3桁目です。
以前に「教えて」で同じ使い方の質問があり
そこで見た数式を使用していました。

でも、複雑な関数を使用しなくても
簡単な関数でできたので、
今回はとても勉強になりました。
どうもありがとうございました。

投稿日時 - 2006-01-27 15:21:05

ANo.7

>#5
>是非なく#4が正解のような気がするのですが。

ってことは、是非なく#4以外は不正解ってこと?
#4は、単に#1をコピーしただけにしか思えないけど、、、

何か違いがあるなら、後学のために知りたいものです。

投稿日時 - 2006-01-27 12:31:21

お礼

EL-SURさんの教えて頂いたのでできました。
仕事中の投稿なので、返事が遅くなってすみません。
不快な思いをさせてしまいましたね。

数値・文字と両方の方法を教えて頂けたので
今後の参考にもなりました。
ありがとうございました。

投稿日時 - 2006-01-27 15:10:03

ANo.6

僕も#4さんと同じ
Left(right(x,6),3) かなと思いました。

ただ、他にも何か書式設定とか、入力上の制約があえるのでしょうか?(A列に入れるのが数字と文字列が混在している、あるいは入力する桁数が一定でないetc)

そうした場合は文字数をカウントして、それぞれの条件のときの文字数を設定すればすむのではないかとも思いますが、書かれている情報だけでは判断がつかないですね...

投稿日時 - 2006-01-27 08:52:34

お礼

A列の文字数は一定ではありませんが、
他に制約はありません。
=LEFT(RIGHT(A1,6),3) で解決しました。
どうもありがとうございました。

投稿日時 - 2006-01-27 15:05:20

ANo.5

こんばんは。

ご質問の文章どおりでしたら、是非なく#4が正解のような気がするのですが。

その問題で、私の回答が成立するには、
1 1508080  080

B1が文字列でなくてはなりません。

=MID(A1,2,SEARCH(B1,"*"&A1)-1)

ひとつかふたつ条件が足りないような気がしますね。

投稿日時 - 2006-01-26 19:22:36

お礼

文字列で大丈夫です。
=LEFT(RIGHT(A1,6),3)で解決しました。
どうもありがとうございました。

投稿日時 - 2006-01-27 15:03:34

ANo.4

右から4~6桁目の数字を取り出しています

=LEFT(RIGHT(A1,6),3)

とか
=MID(A1,LEN(A1)-5,3)

投稿日時 - 2006-01-26 18:52:00

お礼

=LEFT(RIGHT(A1,6),3)  でできました。
どうもありがとうございました。

投稿日時 - 2006-01-27 15:02:01

ANo.3

以下の方法はどうでしょうか。

=RIGHT(SUBSTITUTE(A1&"a",B1&"a",""),3)

投稿日時 - 2006-01-26 17:48:27

お礼

=LEFT(RIGHT(A1,6),3) で無事に解決しました。
どうもありがとうございました。

投稿日時 - 2006-01-27 15:01:14

ANo.2

すいませんが質問の内容が理解できません。

B1のセル内に一行目の関数を入れたいのですか?
(そもそもそれだと循環関係でエラーになると思います)

またRIGHT関数は文字列の末尾から○文字分を切り出すというものですから、この例で080となるのは正しいと思いますが...

投稿日時 - 2006-01-26 17:35:43

お礼

説明が下手ですみません。
例えなので、セルはどこでも大丈夫です。
以前に教えて!gooで見た数式を使っていたのですが、
解決しました。
ありがとうございました。

投稿日時 - 2006-01-27 14:59:52

あなたにオススメの質問