質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Q&A

解決済

1回答

481閲覧

スプレッドシートにカンマ区切り,及びハイフンで区切られた数値があり,それを条件に従って横方向に展開したい。

SeigoAraki

総合スコア9

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

0グッド

0クリップ

投稿2023/05/14 04:57

編集2023/05/14 06:14

実現したいこと

セルA1に
2,3,5-7,10-13,15
のようにカンマ区切りとハイフン区切りが混在して数値が入力されている。
ハイフンの部分は連番に直して以下のようにし,
2,3,5,6,7,10,11,12,13,15
さらに1セル1数値となるように横方向に展開させる。
つまり,A2に2,B2に3・・・という感じです。
イメージ説明

前提

・作業セルは使わず,一つの数式で完結させる。
・GASは使わないで数式のみで完結させる。
・A1に入る値は,カンマのみ,ハイフンのみの場合もある。

試した数式

以下は作業列を使って試した作成したもの。
セルA2・・・=ArrayFormula(to_text(SPLIT(A1, ",")))
セルA3~E3・・・=iferror(join(",",sequence(1,mid(A2,find("-",A2)+1,len(A2)-find("-",A2))*1-left(A2,find("-",A2)-1)*1+1,left(A2,find("-",A2)-1)*1,1)),A2)
(セルA3からE3に入る数式は上の数式のA2部分を相対参照として変更して入力されている。A2,B2,C2・・・E2という感じです。)
セルA4・・・=split(join(",",A3:3),",")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以前に同じような質問に回答したことがありますが、新関数の登場前だったんですごーく長い式になりました。
今は 新関数あるから 割と短い式で処理できます。

半角の - と数字の組み合わせだと SPLITした時に日付化しちゃうんで、それを防止するための TO_TEXTとARRAYFORMULAがなければもっとすっきりするんですが。。

GoogleSheets

1=ARRAYFORMULA(TOROW(MAP(TOCOL(TO_TEXT(SPLIT(A1,","))), 2 LAMBDA(v,SEQUENCE(1,IFERROR(SUMPRODUCT(SPLIT(v,"-"),{-1,1}))+1,INDEX(SPLIT(v,"-"),,1)))),3))

投稿2023/05/16 00:17

編集2023/05/16 00:24
sawa

総合スコア3002

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SeigoAraki

2023/05/16 14:40

ありがとうございます。やりたいことができました。正直なところ,自分では少しはエクセルやスプレッドシートの知識はあるとは思っていたのですが,ここまで色々な関数を組み合わせて作ったことは無いのでまだまだだなと実感しております。大変勉強になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問