1

列Dに、列Eのデータを含む最後のセルからヘッダー「DETAIL」の列まで値をコピーしたいと思います。E からそのヘッダーの列まで 2 から 15 の列がある可能性があるため、ここで行き詰まっています。明確にするために、例:

    A    B    C    D    E    F    G    H    DETAIL
1   x    x    x         a    b    c    d    x
2   x    x    x                             x
3   x    x    x         c    b    a         x
3   x    x    x         d    c              x

次のように列 D を埋める必要があります。

    A    B    C    D    E    F    G    H    DETAIL
1   x    x    x    d    a    b    c    d    x
2   x    x    x                             x
3   x    x    x    a    c    b    a         x
3   x    x    x    c    d    c              x

これを式(思いつかなかった)またはプログラムで処理してもかまいません。

4

3 に答える 3

2

を押しCtrlF3て名前マネージャーを表示し、[新規] をクリックして動的な名前付き範囲を作成し、範囲に何か名前を付け (私は を選びましたMyRange)、次の式を使用して定義します (シート名を変更する必要がある場合があることに注意してください)。

=Sheet1!E2:INDEX(Sheet1!2:2,MATCH("Detail",Sheet1!$1:$1,0)-1)

E2 の tigeravatar 動的名前付き範囲:

IFERROR次に、セル D2 で下にコピーして、次の式を使用します (下位互換性のために使用しませんでした)。

=IF(COUNTA(MyRange),INDEX(MyRange,MATCH(REPT("z",255),MyRange)),"")

提供されたサンプル データを使用した結果 (強調表示) は次のとおりです。

式の結果

于 2013-09-20T17:02:58.953 に答える
1

使ってみてくださいLOOKUP:

=IFERROR(LOOKUP(9^99,SEARCH("*",E1:H1),E1:H1),"")

SEARCH("*",E1:H1)任意の文字に一致する場合は数値を返し、セルが空白の場合はエラーを返します。次に、 によって生成された配列LOOKUPよりも小さい最後の数値のセルの内容を返します。9^99SEARCH

たとえば、最初の行では、 が最後の 1をSEARCH("*",E1:H1)返す{1,1,1,1}ように を返します。LOOKUPd

3 行目では、ここにある最後の 1 を返し、SEARCH("*",E3:H3)返します。{1, 1, 1, #VALUE!}LOOKUPa

この数式は、数値とテキストの両方で機能します。欠点は、INDEX/MATCHよりも遅いと見なされることです。一方、INDEX/MATCHを変更して数値を処理したり、両方で機能するように変更したりできますが、配列数式になります。

=IFERROR(INDEX(E1:H1,,MATCH(1,SEARCH("*",E1:H1))),"")

[ Ctrl+ Shift+で動作し、それ以外の場合は単独でEnter空のセルを返します]Enter

于 2013-09-20T17:02:46.117 に答える