文字列から複数の数字を抽出し区切り表示したい。

Anonymous
2020-11-19T06:28:31+00:00

お世話になります。

首題の件、エクセルで例として以下を抽出する関数プログラムを作成し、エクセルト365で作成するとうまくいきましたが、それをOFFICE2016で使用しようとすると#NAMEと表示されてしまいます。(例題は3種類の数字ですが、最大で数字は4種類)

(例)  

5.計測・試験・評価・検査, 7.不具合・クレームの未然防止・対策, 11.営業・サービス・メンテナンス

→OUTPUT :5&7&11

「エクセル365のプログラム(成功例):」

'=IF(J22="自己の業務内容や課題が変わり、活用機会がなくなった。","-",SUBSTITUTE(TRIM(CONCAT(IFERROR(VALUE(MID(K22,SEQUENCE(LEN(K22)),1))," ")))," ","&"))

これをOFFICE2016ではしらせると、何かの操作時に#NAMEと表示され後戻りがききません。

尚、とCONCATとSEQUENSE関数の前に「_xlfn.」がついています。

'=IF(J22="自己の業務内容や課題が変わり、活用機会がなくなった。","

",SUBSTITUTE(TRIM(_xlfn.CONCAT(IFERROR(VALUE(MID(K22,_xlfn.SEQUENCE(LEN(K22)),1))," "))),"

","&"))

「質問」OFFICE2016でも対応可能なプログラム法を教えてください。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません
質問作成者が受け入れた回答
Makapu 92,285 評価のポイント ボランティア モデレーター
2020-11-21T12:42:44+00:00

横合いから失礼いたします。

関数を使用する方法であれば、Hebikuzureさんが示されています様に、以下の サポート記事の 3番目の方法 にある様な MID 関数、SEARCH 関数または FIND 関数などを駆使する事で実現は可能と思います。

関数を使用してテキストを複数の列に分割する(日本語版)

ただ、日本語版は機械翻訳で関数式も変に変換されているので、関数式は英語版で読むのが良いです。

Split text into different columns with functions(英語版)

ただ、挑戦しました所、入れ子になりすぎて訳が分からなくなってきましたので、ユーザー定義関数を組んでみました。

関数名:Keisoku

・Jouken:"自己の業務内容や課題が変わり、活用機会がなくなった。" または "-" のセル

・strBuf :"5.計測・試験・評価・検査, 7.不具合・クレームの未然防止・対策, 11.営業・サービス・メンテナンス" のセル

(例)

・式:=keisoku(J22,K22) 

・結果:5&7&11

Function Keisoku(Jouken As String, strBuf As String)

    Dim iCnt As Variant

    Dim strSplit

    Dim strWk As String

    Dim StrAll As String

    strSplit = Split(strBuf, ",")

    For iCnt = LBound(strSplit) To UBound(strSplit)

        strWk = Trim(Left(strSplit(iCnt), InStr(strSplit(iCnt), ".") - 1))

        If iCnt = 0 Then

            StrAll = strWk

        End If

        If iCnt > 0 And Trim(strSplit(iCnt)) <> "" Then

            StrAll = StrAll & "&" & strWk

        End If

    Next iCnt

    If Jouken = "自己の業務内容や課題が変わり、活用機会がなくなった。" Then

       Keisoku = "-"

    Else

       Keisoku = StrAll

    End If  

End Function

<参考>

【Excel VBA入門】ユーザー定義関数の作り方。Functionプロシージャを理解する

ただ、通常の関数で出来た方がベストですよね(^^;

こちらには頻繁にはお見掛けしませんが、VBA 、関数式に精通されている方もいらっしゃいます。回答が付く事を期待してお待ちしましょう。

こちらはユーザー同士の相互互助で成り立っているコミュニティとなっており、必ず回答を必ず得られる場所ではありません。申し訳ございませんが、ご理解いただけますと幸いです。

※一連のやり取りを拝見して思いましたのは、初めにご提示いただいた関数式を 作成される優れた力量の持ち主でいらっしゃる事から、ヒントから時間を掛けて調べて挑戦すれば必ず出来る、という「獅子の子落とし」的なコメントと受け取って、是非成功していただきたいと思います。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません
質問作成者が受け入れた回答
Hebikuzure aka Murachi Akira 333.8K 評価のポイント MVP ボランティア モデレーター
2020-11-21T10:23:06+00:00

> あなたの回答がいかがわしくないと思った

「いかがわしくない」というのは通常肯定的な評価を示す言い回しですね。ありがとうございます。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません
質問作成者が受け入れた回答
Anonymous
2020-11-21T13:18:22+00:00

Makapu様

 ご連絡ありがとうございます。

 非常にご丁寧にまた真摯に対応頂きましたこと深く感謝するとともに、同じように他に困っている方

の参考として連絡させていただきます。

 なお、私も昨日から様々なネット回答を参考に

自分で取り組み、関数でうまくいきました。

FIND関数とMID関数でしたね。

 今回初めての依頼で藁をもすがる思いだったので私自身にも失礼があったと思います。そのため、素気ない回答に失望し、コミュニティはあまり役にたたないという先入観を持ってしまいましたが、このような回答をいただける方もおられることがわかりました。私もMakapu様のような気持ちのいい対応を今後も心掛けていこうと思います。

 ありがとうございました。!!

「文字列から複数の数字を抽出し、区切り表示を

行うケース」

例)02.性能・作業性・耐久性向上・安定性, 04.原理・現象・原因の探求、解明, 08.時間短縮、業務改善、リードタイム短縮

目的)2&4&8を取り出す。

<第一段階> 1番目の数字抽出

=IFERROR(MID($K24,FIND(".", $K24)-2,2),"")

→ これで02を抽出

<第二段階> 2番目の数字抽出

=IFERROR(MID($K24,FIND(".", $K24, FIND(".",$K24)+1)-2,2),"")

→ これで04を抽出

<第三段階> 3番目の数字抽出

=IFERROR(MID($K24,FIND(".",$K24,FIND(".",$K24,FIND(".",$K24,FIND(".",$K24)+1)+1))-2,2),"")→ これで08を抽出

このあと、TEXT関数を使って上の0をとる。

次に、CONCATENATE関数を使って

2&4&8となりました。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

10 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2020-11-20T10:30:46+00:00

    あなたは最低なボランティアモデレータですね。

    おそらく質問に関する回答が能力的にできないんでしょうね。

    だからつまらん無能な回答ばかりするんですね。

    非常に不愉快です。

    悔しければ、しっかり納得いく回答をよこしてから説教してください。できなければ返答いりません。

    申し訳ありませんが、この回答者のおかげで、このコミュニティが全く意味のないものと思ってしまいました。

    他の有料サイト等を探します。

    以下に対して私の回答です。

    ①ただで教えてもらえるかもというスケベ心を出したために不幸な結果

    →もともとマイクロソフトの優良サービスに質問内容を

    いったあと、優良サービスでも対応が難しいということで

    こちらを紹介させていいただいた次第です。

    自分でいろいろ調べてもわからないから、藁をもすがる思いで

    聞いた次第です。よくそんなスケベ心といえますね。

    ②「丸投げ」質問には基本的に回答しません。

    →丸投げなんかしていません。第一、365ではいろいろ調べて

     自分なりに考えているんです。これを2016でもいける関数がどうしてもわからないから聞いているんです。

    第一、今までの回答をみると、まったく質問の意図を組んだ回答となっていません。

     1回目の回答) 

     2016にはそんな関数はない。とあります。

     私の質問にもそう書いています。しっかり質問を読んでください。まったく回答になっていません。

     2回目の回答)

    出現する数字が決まっている(任意の数字が出現するのではなく、あらかじめ決まってる数字のどれかが出現する)のなら、SEARCH や FIND で検索する方法が考えられますね。

    →だから質問に以下のことも記載しています。

    (例題は3種類の数字ですが、最大で数字は4種類)

    まったく真摯に回答していただこうという意図が見えません。

    こちらは、必死で聞いているので本当に腹が立ちます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Hebikuzure aka Murachi Akira 333.8K 評価のポイント MVP ボランティア モデレーター
    2020-11-20T09:59:45+00:00

    素直にお金を払っておけば良かったものを、ただで教えてもらえるかもというスケベ心を出したために不幸な結果になったようですね。

    こちらのフォーラムは「お金の節約」のための場所ではないので、当然の帰結でしょう。

    もし今後このフォーラムを利用されることがあるなら、最初に以下をよく読んでください。

    • マイクロソフト コミュニティへ質問をする前に

    https://answers.microsoft.com/ja-jp/feedback/forum/fdbk_commsite-fdbk_getstart/%e3%83%9e%e3%82%a4%e3%82%af%e3%83%ad%e3%82%bd/db5a1023-454f-4c18-9f8a-661396f70473

    • マイクロソフト コミュニティへはどのような内容を投稿することができますか?

    https://answers.microsoft.com/ja-jp/feedback/forum/fdbk_commsite-fdbk_getstart/%e3%83%9e%e3%82%a4%e3%82%af%e3%83%ad%e3%82%bd/7f096d90-2193-4cd9-bbe5-3ae436debdd8

    • 質問にはどのような内容を書けば良いですか?

    https://answers.microsoft.com/ja-jp/feedback/forum/fdbk_commsite-fdbk_getstart/質問にはど/330ff081-98bc-4d4c-a4a2-cbd992c020d0

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません