【やりたい事】
A1セルに以下の数字があります。
やりたい事は、B1セルに関数を入れ
鬼滅の刃ケース1であれば、1,999,999を
ケース2であれば、299,999を
取り出したいです 左から2番目の数字です
ご存じの方、教えて下さい
ケース1 A1セル
契約の金額 1,000,000 1,999,999 12345 0 0
ケース2 A1セル
契約の残高 200,000 299,999 123456 0
条件:取り出し数字は、左から数えて、2番目にある数字です
スペースが必ずあります。スペースの文字数に規則性なしです
【考えた関数】
=MID(A1,20,10)
ケース1の場合はうまく取り出せますが、ケース2だと
うまう、299,999を取り出す事が出来ません
No.9ベストアンサー
- 回答日時:
No.2,3,7です。
>,, は , 2つではなく、1つでないでしょうか?
>ASC(A1) " " TRUE の3つを区切るだけかと
>思うのですが。
とのご質問ですが、そもそも関数の引数の概念を勘違いしておられます。
関数の引数の間の「,」は単に引数を区分するだけのものではありません。
ですから引数の区切りが判ればよいというものではなく、引数は原則として定められた位置に、定められた意味を持たせて配置しなければ正しい結果が返りません。そうでない場合、結果が正しく見えていても、それは偶然です。
今回のご質問では、
契約の金額 1,000,000 1,999,999 12345 0 0・・・・・・(a)
という文字列なので、間のスペースが1文字分しかありません。しかし、
>スペースが必ずあります。スペースの文字数に規則性なしです
との説明があるので、1,999,999の前にスペースが2つあり
契約の金額 1,000,000 1,999,999 12345 0 0・・・・・・(b)
となることもあるかも知れないという前提になります。
添付画像①をご覧ください。
A1セル(a)のデータがあったとき、B1にご質問者の仰っている「,」を1つにした数式
=INDEX(TEXTSPLIT(ASC(A1)," ",TRUE),3)・・・・・・(c)
を入れると
「1,999,999」が返るのでこの数式は一見間違っていないように見えます。
しかし画像②のように、A1セル(b)のデータがあったとき、B1に(c)の数式を入れると、B1は空白になってしまいます。
このように(c)の数式はご質問の意図と合致していないことになります。
この理由は前回回答で説明した、TEXTSPLITの引数の解説をよく読んでいただければ判ります。
TEXTSPLIT関数の第一引数は横方向の区切文字、第二引数は縦方向の区切文字ですから(c)の数式の意味は、【ASC(A1)という文字列、つまり元のA1セルの文字列を半角に変換できるものは半角に変換し、「半角スペース」で横方向に分割し、「TRUE」という文字で縦方向に分割する。】という意味になってしまいます(TRUEが空白を無視するという意味ではなくなってしまいます)。
従って画像③のように「空白」は無視されず、「契約の金額」「1,000,000」「スペース(空白)」「1,999,999」「12345」「0」「0」の7つの要素に分割されることになり、左から3つ目つまり「空白」が返ってしまうのです。
実際のデータでは起こらないとは思いますが、もしA1の文字列に「TRUE」が混入していたらどうなるでしょうか?
画像④をご覧ください。A1のデータにTRUEが混入しているとTRUEで改行(縦方向に分割)されることになるので、TRUEが2つあると3行目が全体が返るこになり、左から3つ目だった筈が上から3つ目になっています。まったく想定外の結果ではありませんか?
ですから、関数の引数は定められた位置に、定められた意味を持たせて配置するのが原則です。
しかし、厳密でないものもあります。
前回回答の数式
=INDEX(TEXTSPLIT(ASC(A1)," ",,TRUE),3)・・・・・・(d)
のINDEX関数は=INDEX(配列,行番号,列番号)のように記述するルールです。横方向に分割する場合、列番号は第二引数ですから、本来なら=INDEX(配列,,列番号)のように「,」を2つつけるべきだということになります。しかし、(d)の数式は=INDEX(配列,列番号)という表記なのに、正しい結果を返します。ちなみに
=INDEX(TEXTSPLIT(ASC(A1)," ",,TRUE),,3)
のように「,」を2つにしても、数式の結果は変わりません。
No.8
- 回答日時:
自作関数になります。
1.以下のマクロを標準モジュールに登録します。
Public Function MySplit(ByVal str As String, ByVal num As Long) As String
Dim elms As Variant
Dim elm As Variant
Dim i As Long: i = 0
elms = Split(str, " ")
For Each elm In elms
If elm <> "" Then
i = i + 1
MySplit = elm
If i = num Then Exit Function
End If
Next
MySplit = ""
End Function
2.次に、B1セルに以下の式を入力します。
=MySplit(A1,3)
これで、完了です。
A1セルの左から3番目の文字のかたまりを表示します。
左から1番目("契約の金額")を表示したいなら、
=MySplit(A1,3) と入力します。
左から2番目("1,000,000")を表示したいなら、
=MySplit(A1,2) と入力します。
No.7
- 回答日時:
No.2,3です。
>本件は、特に、分割せずに、2番目の数値をきれいに取り出ししています
>関数の最後の3が何を意味しているのかも知りたいです
とのご希望ですので、簡単に解説します。
TEXTSPLIT関数は
=TEXTSPLIT(分割対象文字列,横方向に分割する区切り文字,縦方向に分割する区切り文,TRUE=空白を無視する/FALSEまたは省略=空白を無視しない,0または省略=大文字と小文字を区別する/1=大文字と小文字を区別しない,各行の横方向のデータ不足時に表示する値。省略時は「#N/A」)
という引数を指定して使用します。
今回の例では、TEXTSPLIT(ASC(A1)," ",,TRUE)という数式ですから、
ASC(A1)という文字列、つまり元のA1セルの文字列を半角に変換できるものは半角に変換し、「半角スペース」で横方向に分割し、空白は無視する。
という数式だということになります。A1セルの文字列が
契約の金額 1,000,000 1,999,999 12345 0 0
だとすると、間のスペースが幾つあっても分割後は空白になるので、無視されて、
「契約の金額」「1,000,000」「1,999,999」「1234」「0」「0」
という6つの要素に分解されることになります。
INDEX関数はこれらの要素を配列として扱うためのものです。
INDEX(一次元配列,要素番号)すると配列の中から要素番号で指定された要素を返します。従って、
=INDEX(TEXTSPLIT(ASC(A1)," ",,TRUE),3)
は上記の6つの要素の左から3番目の要素である「1,999,999」が返ることになります。
解説ありがとうございます。大変、分かりやすかったです。
他、質問ですが、以下の関数はTRUEの前の
,, は , 2つではなく、1つでないでしょうか?
ASC(A1) " " TRUE の3つを区切るだけかと
思うのですが。
教えて頂けると幸いです
TEXTSPLIT(ASC(A1)," ",,TRUE)
No.5
- 回答日時:
①今回の元データ
②データの長さを計算:LEN関数
③抽出するデータの長さを計算:上記の数値より[-9]する。
④MID関数で元の文字列から必要部分を抽出。
⑤ASC関数で文字列にする。
⑥NUMBERVALUE関数で数値化。
⑦LEN関数で文字列の長さを計算。
⑧上記の長さを2で割る。
⑨LEFT関数で最初の数値に該当する部分を抽出。
⑩RIGHT関数で最初の数値に該当する部分を抽出。
⑪⑨での文字列を数値に変換。:NUMBERVALUE関数
⑫⑩での文字列を数値に変換。:NUMBERVALUE関数
⑪、⑫でようやく数値で扱いが可能になる。
【使った関数の実際】
②、=LEN(A2)
③、=B5-9
④、=MID(A2,1,C5)
⑤、=ASC(E5)
⑥、=NUMBERVALUE(F5)
⑦、=LEN(G5)
⑧、=H5/2
⑨、=LEFT(G5,I5)
⑩、=RIGHT(G5,I5)
⑪、=NUMBERVALUE(J5)
⑫、=NUMBERVALUE(K5)
●エクセルは、2019です。
途中に変な変換をしているようになっていますが、20桁を超えると数値変換に誤差が出ていたので、こういう結果になりました。
追加情報は、データの右側のバイト数が固定なのか?と思い、お尋ねしました。
オヤジの頭じゃ、これが限界でした。
■黄色いセルは、失敗部分です。
No.4
- 回答日時:
こんばんは
>バージョン365です
とのことですので、No2様が言及しておられるTEXTSPLITを利用して
=INDEX(TEXTSPLIT(TRIM(SUBSTITUTE(A1," "," "))," "),3)
ではいかがでしょうか?
No.3
- 回答日時:
No.2です。
>バージョン365です
とのことなので、添付画像をご覧ください。
TEXTSPLIT関数が使えるので、B1セルに
=INDEX(TEXTSPLIT(ASC(A1)," ",,TRUE),3)
を入れて下方向へコピーしています。
これで、ご覧のような結果になります。
ちなみに、365でもFILTERXML関数は使えるはずですが、WEB版だと「#VALUE」エラーになってしまいます。
回答ありがとうございます
うまく、抽出できました
仕組みを簡単に教えて頂きたのですが
TEXTSPLITは、区切り位置のように、スペースでセルに
データを分割する関数との事ですが
本件は、特に、分割せずに、2番目の数値をきれいに
取り出ししています
以下関数の最後の3が何を意味しているのかも知りたいです
宜しくお願いします
=INDEX(TEXTSPLIT(ASC(A1)," ",,TRUE),3)
No.2
- 回答日時:
>スペースが必ずあります。
スペースの文字数に規則性なしですとのことなので、A1セルの文字列をスペースで分割して、先頭部分の数字でないものも含めて左から3番目の数字を抽出することにします。
文字列を分割するのに適した関数はTEXTSPLIT関数ですが、バージョン365でしか使えません。
ご質問者のEXCELのバージョンが不明なので、2013以降であれば使えるFILTERXML関数を使うことにして、B1セルに
=INDEX(FILTERXML("<x><y>"&SUBSTITUTE(TRIM(ASC($A1))," ","</y><y>")&"</y></x>","//y"),3)
を入れれば、ご希望の結果になると思います。
ご指導ありがとうございます
バージョン365です
ご指導の関数いれましたが
1,999,999
299,999
は抽出できませんでした。
ヒントあれば教えて下さい
No.1
- 回答日時:
お尋ねしたい事があります。
1,000,000 1,999,999 12345 0 0 と
200,000 299,999 123456 0 について、他の数値はありますか?
あれば、5~6個教えてください。
1,000,000 1,999,999 12345 0 0 と
200,000 299,999 123456 0
1,000,000 800,000 123456 0
1,000,000 1800,000 123456 0
1,000,000 2800,000 123456 0
パターンは無数にありますが
要は2個目の数値を取り出したということです
規則は半角スペースがいくつかはいっているという
ところだけです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel関数について 5 2024/01/07 16:43
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) EXACT関数とIF関数の組み合わせについて 2 2024/04/17 08:26
- Excel(エクセル) 4つのパターンを表示するEXACT関数について 2 2024/04/18 07:49
- Excel(エクセル) エクセルのIF関数について 5 2023/09/10 08:48
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
- Excel(エクセル) 【Excel】複数列ごとに取得するセルを変更したい 2 2023/03/23 21:04
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/10/25 17:10
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
土曜の昼、学校帰りの昼メシの思い出
週休2日が当たり前の今では懐かしい思い出ですが、昔は土曜日も午前中まで学校や会社がある「半ドン」で、いつもよりちょっと早く家に帰って食べる昼ご飯が、なんだかちょっと特別に感じたものです。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
【関数】先頭だけにある、半角スペースを、とりのぞく事はできますか?
Excel(エクセル)
-
エクセルでの作業計算方法について
Excel(エクセル)
-
2列に入っているデータを1列で表示する関数について
Excel(エクセル)
-
-
4
一つのセルに(例えばA1)入力された3桁・4桁の数字を並べ替えて同一行のセルに表示させる。
Excel(エクセル)
-
5
【関数】スペースがいくつ入った後の文字列を取り出したい
Excel(エクセル)
-
6
エクセルの関数について教えてください
Excel(エクセル)
-
7
Excelの表示についての質問
Excel(エクセル)
-
8
excel で二つのどちらかを選ぶ
Excel(エクセル)
-
9
Excelにてある膨大なデータを管理しています。 そこで、特定の市町村にのみ色を付けたいです。 Ex
Excel(エクセル)
-
10
Excel初心者です。 詳しい方、効率の良いやり方を教えてください。 職場で、抽出したデータの表を見
Excel(エクセル)
-
11
自動入力で今月はMONTH(TODAY())で良いのですが、翌月はどのようにすれば良いでしょうか。
Excel(エクセル)
-
12
数字入力後他の文字等が表示される方法について
Excel(エクセル)
-
13
エクセル初心者です 関数の入れ方を教えてください
Excel(エクセル)
-
14
エクセル関数を使って
Excel(エクセル)
-
15
エクセル②
Excel(エクセル)
-
16
セルの数を求めたい
Excel(エクセル)
-
17
Excelの数式の効率化について
Excel(エクセル)
-
18
Excel 対象のセルに入力が無いとセルに入力できないようにしたい
Excel(エクセル)
-
19
条件付き書式でやりたいのですが
Excel(エクセル)
-
20
Excelで数値を時間数に変換する関数について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CDケースの寸法
-
ケース(12枚入り)割れになり...
-
風俗通いを辞められた人はどう...
-
別れて1週間の元彼に友達として...
-
CDケースの開け方が分かりません…
-
【関数】適切な文字数の数字を...
-
ピエトロドレッシングを単品で...
-
Galaxy使っているかた、ケース...
-
テプラをはがしあと
-
HDD廃棄に際して、壊したいので...
-
これなんて調べたらいいの?
-
ハードディスクの天地とかの向き
-
パイオニア カロッツェリア A...
-
「様」と「さん」 敬称のつけ...
-
CDケースの無い場合の発送。
-
お知恵をお貸しください。
-
位置情報が勝手にオフになる現...
-
電波通信専用の電話番号とはな...
-
Bingの壁紙の撮影場所を知りたい
-
ビジネスホテルのテレビ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CDケースの開け方が分かりません…
-
CDケースの寸法
-
「様」と「さん」 敬称のつけ...
-
丸いブラスチック製のケースの...
-
別れて1週間の元彼に友達として...
-
ケース(12枚入り)割れになり...
-
姉と弟が肉体的に交わることな...
-
HDDを安い外付けケースに入れる...
-
GALAXY sc04j のケース探してま...
-
CDケースの無い場合の発送。
-
DVDのプラスチックケースの...
-
ケチャップ・とんかつソース・...
-
テプラをはがしあと
-
ケースバイケースという言葉が...
-
リハーサル中にバイオリンを落...
-
レコード会社『ジェイストーム...
-
男性がピンク色のiPhoneケース...
-
ピエトロドレッシングを単品で...
-
ハードディスクの天地とかの向き
-
cdケースの開け方がわかりません。
おすすめ情報