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

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

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

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

バイナリ

バイナリは、「0」と「1」だけで表現されている2進数のデータ形式。または、テキスト以外の情報でデータが記述されているファイルを指します。コンピューター内の処理は全て2進数で表記されています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

2回答

1268閲覧

スプレッドシートにある「テキストを列に分割する」機能よりもさらに高度なことをしたい

race

総合スコア16

Google スプレッドシート

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

バイナリ

バイナリは、「0」と「1」だけで表現されている2進数のデータ形式。または、テキスト以外の情報でデータが記述されているファイルを指します。コンピューター内の処理は全て2進数で表記されています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

1クリップ

投稿2020/04/29 08:39

スプレッドシートに存在する「テキストを列に分割する」機能をさらに条件設定したことをしたいです

■やりたいこと
指定した列 or 既に存在する列まで分割し、超過した分はA列に戻り繰り返し分割を実行していく

■理由
16進数のバイナリデータをStirlingのようなバイナリエディタでの表記のようにスプレッドシートに一気に転記したいためです

以下の手順を想定しています

■手順
1.16進数対応するように、スプレッドシートの列をA~P列までにする(計16列)

2.下記のようなバイナリデータを用意する
7C 10 9F E5 B0 10 C0 E1 78 00 9F E5 10 FF 2F E1 8E FF FF EA 00 20 A0 E3 04 10 51 E2 01 20 80 E7

3.バイナリデータをスプレッドシートのA1セルに貼り付ける

4.関数 or 既存機能 or GASを用いて、指定した列 or 既に存在する列まで分割し、超過した場合(P列まで到達)はA列に戻り、繰り返し分割を実行していく
※文字列の分割条件は半角スペースとする

■想定例
https://docs.google.com/spreadsheets/d/1pFX5Q-M3vkfglA3-IkEyr0MRDyo4CPv-wTo0QkKPvt0/edit?usp=sharing

おそらく関数ではなくGASが必要なのかな、と考えています。
関数、GASどちらでもいいので、解決手段をご教授いただけたらと思います。
よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

GASでもやれるでしょうが、半角スペースで分割して、16ずつ取得して折り返すってルールなんで数式でもいけます。

=IFERROR(TRANSPOSE(Query(TRANSPOSE(ARRAYFORMULA(TEXT(SPLIT(sheet1!$A$1," ",TRUE,TRUE),"00"))),"LIMIT 16 OFFSET " & ROW()*16-16 & "",0)),)

例としてsheet1のA1に入れたバイナリデータを求める形にする式です。
これを sheet2のA1に入れて、A2以降にコピペ。

最初に SPLITで半角スペースで分割して、
ARRAYFORMULAとTEXTの組み合わせで 分割後の 00が 数値化されて 0になるのを防止して、
それをTRANSPOSEで縦にならべて
Query と Row()の組み合わせで 上から順に16個ずつ取得して
再度 TRANSPOSE で横にする って感じです。

投稿2020/04/29 13:04

編集2020/04/29 13:08
sawa

総合スコア3002

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

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

race

2020/04/29 13:08

頂いたもので出来ました!ありがとうございます!
guest

0

解決済みだけど、スマートな式で実現できたので備忘録的に回答追加。
SEQUENCEの10のとこは とりあえず10行ってしてるだけで、増やすことも可能。

=ARRAYFORMULA(MID(SUBSTITUTE(A1," ",),SEQUENCE(10,16,1,2),2))

投稿2020/05/26 07:30

sawa

総合スコア3002

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問