2017-03-16 2 views
3

Googleスプレッドシートのマトリックス管理機能は便利で、REGEXMATCHやREGEXEXTRACTなどの正規表現を処理する関数と組み合わせると特に便利です。REGEXEXTRACTが1行と複数列の配列を返すと予想される場合、なぜ単一の値を返すのですか?

私は、予想される結果が得られない原因がわからない場合があります。ここでは、私がやろうとしているものです:

スプレッドシートの設定
地域設定:メキシコ、小数点区切りとして.(ドット)を使用します。

エントリ
A1:abcde


B1:=ArrayFormula(REGEXEXTRACT(A1,{".{1}",".{2}"}))

期待される結果
B1:a
B2:ab

得られた結果
B1:a
B2:

既知の回避策
=ArrayFormula(TRANSPOSE(REGEXEXTRACT(A1,{".{1}";".{2}"})))

もスペイン語サイトに掲載されているこの質問 - 理由>https://es.stackoverflow.com/q/55704/65

+0

関連:http://stackoverflow.com/q/26137115/1595451 AdamLの[answer](http://stackoverflow.com/a/26138109/1595451)の最後のコメントを参照してください。 –

答えて

2

チームはこの問題をよく知っていると修正がすぐそこにする必要があります。


偶然、それは月4日、2017、それを説明する、ARRAYFORMULA() does not work with SPLIT()に彼の答えを修正AdamL同じ日に発表された:

REGEXEXTRACTは、もはや第二引数の配列をサポートするために、表示されません。



我々はREGEXEXTRACTの結果は、正規表現で、入力として複数の列を受け入れないと、ARRAYFORMULAでこの動作は、配列数式でSPLITをできるように、Googleシートで変更によるものであると結論付けることができます。

これは、正規表現内に複数のキャプチャグループがあるREGEXEXTRACTが、各グループに対して1つのセルを持つ水平方向の配列を生成するためです。引数として配列を持つと、動作は未定義ですが、それは私の側では単純な引数です。

+1

私の答えは[REGESEXTRACTに変更されました。 1つの列挙型列挙?](http://es.stackoverflow.com/a/56089/127) – Mariano

2

あなたの特定の数式で期待される結果が見えない場合、 arrayformulaとregexextractを使用している順番です.2つのグループを抽出する正規表現構文を変更するか、各正規表現抽出関数を分割する配列を作成する必要があります。

はそれを行うにはいくつかの方法がありますが、1つの方法は、配列リテラルを作成し、わずか2抽出パターンを指定することです:

={REGEXEXTRACT(A1,"^."),REGEXEXTRACT(A1,"^.{2}")} 
他は2つのキャプチャグループを作成することです

enter image description here

を、約1秒唯一のことは、逆の順序で戻ってくるされ、デフォルトであるが、あなたは簡単に入れ替えることができるsort()によって:

=REGEXEXTRACT(A1,"^((.).)") 

で同様のケースにジャン=ピエールVerhulstを引用

+0

これは参考になるb/c共有の他の回避策ですが、この回答を受け入れるかどうかはわかりませんb/c式/正規表現(ユーザー側)にエラーがある場合や問題がある場合は説明しませんREGEXEXTRACTの実装では(Google側) –

+0

が更新されました - あなたの機能を入れ子にした順番でそれをもっと信じています –

関連する問題