Torow機能の助けを借りて、さまざまなセルを単一の列に変える簡単な方法。
Microsoft Excel 365は、配列でさまざまな操作を実行するために、いくつかの新しい機能を導入しました。 Torowを使用すると、すぐに範囲間変換を実行できます。この新しい機能が達成できるタスクのリストは次のとおりです。
ExcelのTorow関数は、セルの配列または範囲を1つの行に変換するために使用されます。
この関数には合計3つの引数が必要で、そのうち最初の引数のみが必要です。
TOROW(配列、[無視]、[scan_by_column])どこ:
配列(必須) - 単一の行に変換するための配列または範囲。
無視(オプション) - ブランクまたはエラーを無視するかどうかを決定します。これらの値の1つを取得できます。
scan_by_column (オプション) - 配列のスキャン方法を定義します。
ヒント:
Torowは新しい機能であり、Microsoft 365(Windows and Mac用)のExcelでのみサポートされ、WebのExcelです。
単純な範囲間変換を行うには、Trowの式を基本的な形で使用します。このためには、最初の引数(配列)のみを定義する必要があります。
たとえば、3列と3行で構成される2次元配列を単一の行に変換するには、次の式は次のとおりです。
=TOROW(A3:C6)
フォーミュラを1つのセル(私たちの場合はA10)に入力すると、すべての結果を保持するために必要な数のセルに自動的にこぼれます。 Excelの用語では、薄い青色の境界に囲まれた出力範囲は、流出範囲と呼ばれます。
この式の仕組み:
まず、供給された細胞の範囲が2次元アレイに変換されます。コンマが区切った列とセミコロン分離の行に注意してください。
{"Apple","Banana","Cherry";1,2,3;4,5,6;7,8,9}
次に、Torow関数は配列を左から右に読み取り、1次元の水平配列に変換します。
{"Apple","Banana","Cherry",1,2,3,4,5,6,7,8,9}
結果はセルA10になり、そこから右側の隣接セルにこぼれます。
デフォルトでは、TOROW関数は、空のセルやエラーを含むソースアレイからすべての値を保持します。出力では、空白のセルの代わりにゼロ値が表示されますが、これは非常に混乱する可能性があります。
ブランクを除外するには、無視する引数を1に設定します。
=TOROW(A3:C5, 1)
エラーを無視するには、無視する引数を2に設定します。
=TOROW(A3:C5, 2)
両方をスキップするには、ブランクとエラーをスキップするには、無視する議論に3を使用します。
=TOROW(A3:C5, 3)
以下の画像は、3つのシナリオすべての動作を示しています。
デフォルトの動作により、TOROW関数はアレイを左から右に水平に処理します。上から下まで列ごとに値をスキャンするには、3 rd引数( scan_by_column )をtrueまたは1に設定します。
たとえば、ソース範囲を列ごとに読み取るには、E3の式は次のとおりです。
=TOROW(A3:C5)
列ごとに範囲をスキャンするには、E8の式は次のとおりです。
=TOROW(A3:C5, ,TRUE)
どちらの場合も、結果の配列は同じサイズですが、値は別の順序で配置されます。
いくつかの非隣接範囲を単一の行に結合するには、それぞれHSTackまたはvstackの助けを借りて、それぞれ水平または垂直に単一の配列にそれらを積み重ね、次にTorow関数を使用して組み合わせた配列を行に変換します。
ビジネスロジックに応じて、次の式の1つがタスクを実行します。
A3:C4の最初の範囲、A8:C9の2番目の範囲で、以下の式は2つの範囲を水平方向に単一の配列に積み重ね、次に左から右に値を読み取る行に変換します。結果は、下の画像にE3になります。
=TOROW(HSTACK(A3:C4, A8:C9))
積み重ねられた配列を上から下に垂直に読み取るには、下の画像のE5に示すように、Torowの3番目の引数をTrueに設定します。
=TOROW(HSTACK(A3:C4, A8:C9), ,TRUE)
以前のアレイの各アレイを前の配列の下部に追加して、併用配列を水平方向に読み取るには、E12の式は次のとおりです。
=TOROW(VSTACK(A3:C4, A8:C9))
以下の各配列を前のアレイの下部に追加し、組み合わせた配列を垂直にスキャンするには、式は次のとおりです。
=TOROW(VSTACK(A3:C4, A8:C9), ,TRUE)
ロジックをよりよく理解するには、結果の配列の異なる値の順序を観察します。
Microsoft Excel 2016から始めて、単一の列または行から簡単に一意の値を取得できる素晴らしい機能があります。ただし、マルチコラム配列を処理することはできません。この制限を克服するには、ユニークな機能とトーロウの機能を一緒に使用します。
たとえば、範囲A2:C7からすべての異なる(異なる)値を抽出し、結果を1つの行に配置するには、式は次のとおりです。
=UNIQUE(TOROW(A2:C7), TRUE)
Torowが1次元の水平アレイを返すと、Trueと一意の2番目の( by_col )引数を設定して、列を互いに比較します。
結果をアルファベット順に配置したい場合は、上記の式をソート関数に包みます。
=SORT(UNIQUE(TOROW(A2:C7), TRUE), , ,TRUE )
一意と同様に、ある種のby_col引数もtrueに設定されています。
Torow関数が使用できないExcelバージョンでは、古いバージョンで機能するいくつかの異なる関数の組み合わせを使用して、範囲を1列に変換できます。これらのソリューションはより複雑ですが、機能します。
範囲を水平にスキャンするには、一般的な式は次のとおりです。
インデックス(範囲、商(列(a1)-1、列(範囲))1、mod(列(a1)-1、列(範囲))1)範囲を垂直にスキャンするには、一般的な式は次のとおりです。
index( range 、mod(列(a1)-1、列(範囲))1、商(列(a1)-1、列(範囲))1)A3:C5のサンプルデータセットの場合、式はこの形状を取ります。
範囲を列ごとにスキャンするには:
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1)
この式は、誤ったものに設定された3番目の引数または省略に設定されたTOROW機能の代替です。
=TOROW(A3:C5)
列ごとに範囲をスキャンするには:
=INDEX($A$3:$C$5, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1)
この式は、3 rd引数がtrueに設定されたTorow関数に相当します。
=TOROW(A3:C5, ,TRUE)
動的アレイトロウ機能とは異なり、これらの従来の式は、結果を表示したい場所に各セルに入力する必要があることに注意してください。私たちの場合、最初の式(列ごと)がE3に移動し、M3を介してコピーされます。 2番目の式(列による)はE8に着地し、M8にドラッグされます。
式が正しくコピーするには、絶対参照($ 3:$ c $ 5)を使用して範囲をロックします。指定された範囲も行います。
式を必要以上に多くのセルにコピーした場合は、#ref! 「エクストラ」セルにエラーが表示されます。これを修正するには、次のようにフォーミュラをiferror機能に包みます。
=IFERROR(INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1), "")
これらの式の仕組み
以下は、列ごとの値を配置する最初の式の詳細な分解です。
=INDEX($A$3:$C$5, QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1, MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1)
式の中心で、インデックス関数を使用して、範囲内の相対位置に基づいてセルの値を取得します。
行番号は、この式で計算されます。
QUOTIENT(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1
アイデアは、1,1,1,1,2,2,2,3,3,3,3などの繰り返し数のシーケンスを作成することです。ここで、各数値は、ソース範囲に列があるのと同じくらい数回繰り返されます。そして、これが私たちがこれを行う方法です:
商は、分割の整数部分を返します。
分子の場合、列(a1)-1を使用します。これは、式が入力された最後のセルの式がn (範囲の範囲の値を引いた値の総数)に入力される最初のセルの0からシリアル番号を返します。この例では、E2で0、M3で8が0です。
分母には、列を使用します($ a $ 3:$ c $ 5))。これにより、範囲内の列の数に等しい定数数が返されます(私たちの場合は3)。
その結果、商関数は最初の3つのセル(E3:G3)で0を返し、1つを追加するため、行数は1です。
次の3つのセル(H3:J3)の場合、商は1を返し、1は行番号2を与えます。
列番号を計算するには、mod関数を使用して適切な数値シーケンスを作成します。
MOD(COLUMN(A1)-1, COLUMNS($A$3:$C$5)) 1
範囲に3つの列があるため、シーケンスは次のように見える必要があります。
MOD関数は、分割後に残りを返します。
E3、mod(列(a1)-1、列($ a $ 3:$ c $ 5))1
なります
mod(1-1、3)1)
および1を返します。
F3、mod(列(b1)-1、列($ a $ 3:$ c $ 5))1
なります
mod(2-1、3)1)
2を返します。
行番号と列番号が確立されると、インデックスはその行と列の交差点で値を簡単に取得します。
E3では、インデックス($ a $ 3:$ c $ 5、1、1)は、1列目と参照範囲の第1列、すなわちセルA3から値を返します。
F3では、インデックス($ a $ 3:$ c $ 5、1、2)は、1列目と2 ND列、つまりセルB3から値を返します。
など。
列ごとに範囲をスキャンする2番目の式は、同様の方法で機能します。違いは、modを使用して行番号と商を計算して列番号を把握することです。
トロウ機能がエラーをもたらす場合、これらの理由の1つである可能性が最も高いです。
ほとんどのExcel関数を使用して、#Name?エラーは、関数の名前が間違っていることを明確に示しています。 Torowを使用すると、機能がExcelで使用できないことも意味します。 365以外のExcelバージョンの場合は、Torow Alternativeを使用してみてください。
#num!エラーは、返された配列が行に収まることができないことを示します。ほとんどの場合、これは、より小さな範囲ではなく、列全体および/または行を参照するときに発生します。
ほとんどの場合、#spillエラーは、式に入った行に結果をこぼすのに十分な空白のセルがないことを示唆しています。隣接するセルが視覚的に空である場合は、スペースや他の非印刷文字がないことを確認してください。詳細については、Excelの#Spillエラーの意味を参照してください。
これで、ExcelでTorow関数を使用して2次元配列または範囲を単一の行に変換する方法です。お読みいただきありがとうございます。来週のブログでお会いしましょう!
Excel Torow機能 - フォーミュラの例(.xlsxファイル)
以上が範囲または配列を列に変換するためにトーロー関数を優れていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。