9

シート1のテーブルを次のように並べ替えるにはどうすればよいですか

A B C D E
3 7 3 6 5

シート2の別のテーブルに

A C E D B
3 3 5 6 7

関数のみを使用して?

4

5 に答える 5

11

さて、これが追加の一時的な列のない「1つの数式がすべてを行う」ソリューションです。

ここに画像の説明を入力してください

A6の式:

= INDEX($ A $ 2:$ E $ 2、MATCH(SMALL($ A $ 3:$ E $ 3 + COLUMN($ A $ 3:$ E $ 3)/ 100000000、COLUMN())、$ A $ 3:$ E $ 3 + COLUMN ($ A $ 3:$ E $ 3)/ 100000000,0))

配列数式として入力します。つまり、--Ctrlを押します。次に、それを隣接する列にコピーします。ShiftEnter

数値も取得するには、A7で次の数式を使用します(これも配列数式として)。

= ROUND(SMALL($ A $ 3:$ E $ 3 + COLUMN($ A $ 3:$ E $ 3)/ 100000000、COLUMN())、6)

両方の式は、潜在的な重複も処理する必要があるため、少し肥大化しています。解決策は、並べ替えを適用する前に、列のごく一部を追加するだけです(SMALL関数)-次に、それを再度削除します...

于 2013-02-22T20:19:19.327 に答える
11

これを行う非常に簡単な方法の1つは、ランクインデックスを作成し、HLOOKUPを使用して対応する値を見つけることです。

=RANK(A4,$A$4:$E$4,1)

例1

=IF(COUNTIF($A$1:A$1,A1)>1,RANK(A4,$A$4:$E$4,1)+COUNTIF($A$1:A$1,A1)-1,RANK(A4,$A$4:$E$4,1))

例2

=HLOOKUP(COLUMN(),$A$2:$E$4,2,FALSE)

例3

=HLOOKUP(COLUMN(),$A$2:$E$4,3,FALSE)

例4

于 2013-02-21T21:19:50.790 に答える
1

簡単な解決策は、「Large」関数を使用することだと思います: エクセルのスクリーンショット

列関数は 5 から 1 までを数える簡単な方法ですが、ヘルパー列を使用するとさらに簡単になる場合があります。

"Small" 関数を使用しても同様の答えが得られます。

于 2017-06-09T11:41:56.610 に答える
0

それは実行可能です!:-)

これがサンプルファイルです

説明

データが Sheet1 の行 1 にあり、データを別のシートの列 1 から並べ替える必要があると仮定します。そうでない場合は、それに応じて調整します。

この数式をターゲット シートの列 1、たとえば行 2 に配置します。

=ROUND(SMALL(Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,COLUMN()),6)

数式を配列数式として入力する必要があります。つまり、Ctrl-Shift-Enter を押します。

1列目以外の列に配置する場合は、セル自体への参照である必要があるCOLUMN()場所COLUMN()-COLUMN($A$2)+1に置き換える必要があります。$A$2

この数式は、範囲内の最小の数値を返します。それを次の 4 列にコピーすると、数値の順序リストが得られます。

これを列番号に戻すには、次の 2 つの手順を実行する必要があります。

  1. 列番号を計算します。
    これは、次の式で行うことができます。
    =MATCH(SMALL(Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,COLUMN()),Sheet1!$A$1:$E$1+COLUMN(Sheet1!$ A$1:$E$1)/100000000,0)
    
    - ここでも、配列数式として入力します。ソース データが列 A で始まらない場合は+COLUMN(Sheet1!$A$1)-1、$A$1 をソース データの左端のセルに置き換える必要がある場所を追加する必要があります。
  2. 列番号を文字に変換する:
    ステップ 1 の列番号がセル A6 にあると仮定すると、次の式で次のようになります。
=LEFT(ADDRESS(1,A6,2),SEARCH("$",ADDRESS(1,A6,2))-1)

もちろん、ステップ 1 と 2 を組み合わせることもできます。これにより、次のメガフォーミュラが生成されます。

=左(
    住所(
        1、
        マッチ(
            SMALL(Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,COLUMN()),
            Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,
            0)、
        2)、
    探す(
        "$",
         住所(
             1、
             マッチ(
                 SMALL(Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,COLUMN()),
                 Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,0),
             2)
     )-1
)
ここでも、配列数式として入力します。

于 2013-02-21T20:27:32.827 に答える