1

Excel ファイルを変更して機能を改善しようとしていますが、残念ながら Excel の経験があまりありません。

私の問題を説明するために、WS1 と WS2 の 2 つのワークシートがあるとします。WS1 には、ユーザーが入力したすべてのデータが含まれます。最初の列には整数が含まれます。WS2 に WS1 の動的ビューを含めたいと考えています。特に、WS2 には、最初の列に「1」が含まれる WS1 のすべての行が含まれている必要があります。WS1 が更新されるたびに、WS2 の内容が自動的に変更されるはずです。

この機能を標準の Excel 機能/テクニックで実現できますか? ありがとう

4

2 に答える 2

4

これは、配列数式を使用して実現できます。データが列AとワークシートにあるBとします。ワークシートのセルに次の数式を入力します。CWS1A1WS2

=INDEX('WS1'!$A:$A,SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1)))

この数式をCtrl- Shift-で確認Enterして、これが配列数式であることを示します。{}その結果、その周りに中括弧が表示されます。

同様に、セルB1C1ワークシートに次の配列数式を入力しWS2ます。

=INDEX('WS1'!$B:$B,SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1)))       
=INDEX('WS1'!$C:$C,SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1)))

次に、セルA1を選択B1C1、ワークシートWS2で、右下隅を必要なだけ下にドラッグして、すべての行を含めます。下にドラッグしすぎると、 が表示されることに注意してください#NUM。これを回避するには、次のように数式を数式でラップしIFERROR()ます (Excel 2007 以降の場合)。

=IFERROR(INDEX('WS1'!$A:$A,SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1))),"")

列のWS2値が調整されると、ワークシートの列の内容が自動的に更新されます。AWS1

より効率的なソリューションでは、ヘルパー列を使用します。たとえば、 on worksheet としますWS3。最初に、関連する行のインデックスを次の式で計算します ( の配列式としてA1)。

=IFERROR(SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1)),"")

次に、次の式をB1C1およびD1(通常、配列式ではありません)に入力します。

=IF(ISBLANK($A1),"",INDEX('WS1'!$A:$A,$A1))
=IF(ISBLANK($A1),"",INDEX('WS1'!$B:$B,$A1))
=IF(ISBLANK($A1),"",INDEX('WS1'!$C:$C,$A1))

選択して下にドラッグします。

アップロードされたワークブックの例をここで見つけることができます

于 2013-03-29T02:35:44.243 に答える
1

これを行う別の方法: シート WS1 のメイン テーブルの左側にシーケンシャル キー列を作成し、WS2 の vlookup を使用してそれらの行のみを取得し、WS2 の行番号をルックアップ キーとして使用します。

たとえば、データが WS1!C2:D8 にあり、列 D の値が "a" である行のみが必要であるとします。次に、B2 に次のように入力し、B2:B8 に貼り付けます。

=IF(D2="a",ROW(),"")

次に、A2 に次のように入力し、A2:A8 に貼り付けます。

=IF(B2="","",RANK(B2,$B$2:$B$8,-1))

最後に、次の式を WS2!A1 に入力し、必要なだけ上下に貼り付けます (元のテーブルが WS1 にある限り、念のため):

=IF(ROW() > MAX(Sheet1!$A$2:$A$8),"",VLOOKUP(ROW(),Sheet1!$A$2:$D$8,COLUMN()))
于 2013-06-09T12:14:12.610 に答える