行から最後から 2 番目のテキスト値を返すにはどうすればよいでしょうか?

行から最後から 2 番目のテキスト値を返すにはどうすればよいでしょうか?

行の最後から 2 番目のテキスト値を返す Excel 数式を教えていただけますか?

最後のテキスト値に対するこの数式を見つけることができました:=INDEX(U2:Y2,MATCH(REPT("z",255),U2:Y2))ですが、最後から 2 番目の値を取得する方法がわかりません。

答え1

返品する別の方法は次のとおりです。最後から 番目のテキスト値。

=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-COLUMN(U2)+1),"")

この数式は、 だけではなく、Ctrl+ Shift+を使用して配列数式として入力する必要があります。両端に中括弧 { } が表示されていれば、正しく入力されたことになります。EnterEnter


使い方

=IFERROR(...,"")数式の残りの部分がエラーの場合は空白を返します。少なくとも範囲内のテキスト値。

INDEX(U2:Y2,...)は配列を受け取り、その中のある値を返します。INDEX(U2:Y2,4)この場合、配列の 4 番目の要素が返されますX2

LARGE(..,2)配列を受け取り、その配列内で2番目に大きい値を返します。を2他の数値に変更すると、番目に大きいアイテム。SMALL関数は似ていますが、番目最小代わりに値を入力します。

ISTEXT(U2:Y2)*COLUMN(U2:Y2)は、配列数式として入力する部分です。関数は、各セルにテキスト値が含まれているかどうかについて、/値ISTEXTの配列を返します。たとえば、これは になります。関数は列番号を返します。この場合、 になります。これら 2 つは ( 、) 乗算されます。私の例では、最終的な配列は になります。これを前の数式に代入すると、2 番目に大きい値であるためが返されます。TRUEFALSE{TRUE,TRUE,FALSE,FALSE,TRUE}COLUMN{21,22,23,24,25}TRUE=1FALSE=0{21,22,0,0,25}LARGE22

-COLUMN(U2)+1INDEX列 22 から開始しますが、配列には 5 列しかないという事実を考慮して、数式に挿入される値を調整するだけです。との間ではなく、のU2:Y2間の値を返したいのです。152125


範囲内に次のデータがあるとしますU2:Y2

Hello | World | meep | 5 | boop

最後から 2 番目のテキスト値は、meep数式がどのように機能するかを見てみましょう。計算を 1 ステップずつ入力していきます。順序は同じではないかもしれませんが、「数式」リボンの「数式の評価」を使用して、同様の実行結果を確認できます。

=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-COLUMN(U2)+1),"")
=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-21+1),"")
=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-20),"")
=IFERROR(INDEX(U2:Y2,LARGE({TRUE,TRUE,TRUE,FALSE,TRUE}*COLUMN(U2:Y2),2)-21),"")
=IFERROR(INDEX(U2:Y2,LARGE({TRUE,TRUE,TRUE,FALSE,TRUE}*{21,22,23,24,25},2)-21),"")
=IFERROR(INDEX(U2:Y2,LARGE({21,22,23,0,25},2)-21),"")
=IFERROR(INDEX(U2:Y2,23-21),"")
=IFERROR(INDEX(U2:Y2,2),"")
=IFERROR(INDEX({"Hello","World","meep",5,"boop"},2),"")
=IFERROR("meep","")
="meep"

答え2

あなたの方法論は最も効率的ではないかもしれないと思いますが、すでに達成したことを利用して、既存のものを活用することができますMATCH1つ引く検索する新しい境界を与え、その新しい領域から最後のテキストを返します。このOFFSETメソッドを使用すると、次のように新しい制限で検索領域を再定義できます。

=INDEX(U2:Y2,MATCH(REPT("z",255),OFFSET(U2,0,0,1,MATCH(REPT("z",255),U2:Y2)-1)))

答え3

=INDEX(D7:P7,MATCH(REPT("z",255),D7:P7)-1)

関連情報