ランダムに広がるデータのセットを注文する


0

下の画像に見られるように、ランダムに広がったデータのセットがあります。グループ(group1、group2など)の順序で収集して配置したいと思います。次の例では、列A:Rのいずれかに値「1」が存在する場合、すべての「1」がgroup1に並んでいる必要があります。1がない場合は、空白で表示されます。数式またはマクロを使用してExcelでこれを行う方法はありますか?私は式が好きです。ありがとう。

サンプルワークブックへのリンクは次のとおりです(編集可能):https : //1drv.ms/x/s!AgVGRfBWRysXgWJTuf-ILJ0BTxyQ

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


データのピボットテーブルを追加してグループ化することはできませんか?
タレス

数式またはマクロを本当に好むでしょう。毎回ピボットテーブルに切り替えたくありません。
マックス

回答:


1

まず、グループは同じサイズのデータ​​を持っている必要があります(行に1つの数字しかない場合)。したがって、グループ1はTからAKでなければなりません。セルT2に式を入力します。

= IFERROR(INDEX($ A $ 2:$ R $ 2、SMALL(IF($ A $ 2:$ R $ 2 = 1、COLUMN($ A $ 2:$ R $ 2))、COLUMN(A:A)))、 "" )

数式を入力し、Ctrl + Shift + Enterを押して配列数式を入力します。その後、列UからAKにコピーして貼り付けると、Group1に1のすべての出現が表示されます。

それを改善するためのいくつかのヒント:

  • セルT1に数値1だけを入力し、それを表示するようにカスタムフォーマットすると"Group " 0、数式の1をアドレスT1に変更できます。次に、他のグループにコピーする場合、式は他の番号に調整する必要があります(TからAKまでのすべての列に1を入力する必要がありますが、そのうちの1つだけを表示し、AMからBDの列を形成する必要があります) 2など)。
  • Excelが2010年以前の場合、このIFERROR()機能はありません。回避策は、IF()とを使用することISERROR()ですIF(ISERROR(...),"",(...))(...)の最初の引数の式ですIFERROR()
  • 数式を他の行にコピーするには、INDEX関数を変更して行と列を返すことができます。唯一の違いは、返される行がセルの行であり、列が数式であること(...)です。

T2に数式を貼り付けてCtrl + Shift + Enterを押すと、「この関数にはあまりにも多くの引数を入力しました」と表示されます。結果が得られませんでした。この式はすでにテストされていますか?
マックス

私が基本的に望んでいるのは、同じ1桁の数字(たとえば1または2)を収集し、それらを一緒に並べることです。1は別個です。2は別々です。このように続きます。しかし、その番号はすべての行で固定されていません。行に1がない場合もあれば、2つまたは3つだけの場合もあります。これはトリッキーです。
マックス

申し訳ありませんが、式にタイプミスがありました。すでに修正しました。最初のCOLUMN()関数が間違っていました。代わりに、SMALL()関数があります。ここでテストされ、動作します。
タレス

=INDEX($A$2:$R$2,SMALL(IF($A$2:$R$2=1,COLUMN($A$2:$R$2)),COLUMN(A:A)))正しいことでなければなりません
タレス

インデックス機能でこれを実行しようとしましたが、理解できませんでした。はい、それは美しく機能します。どうもありがとう!
マックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.