
行の最後から 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 番目に大きい値であるためが返されます。TRUE
FALSE
{TRUE,TRUE,FALSE,FALSE,TRUE}
COLUMN
{21,22,23,24,25}
TRUE=1
FALSE=0
{21,22,0,0,25}
LARGE
22
-COLUMN(U2)+1
INDEX
列 22 から開始しますが、配列には 5 列しかないという事実を考慮して、数式に挿入される値を調整するだけです。との間ではなく、のU2:Y2
間の値を返したいのです。1
5
21
25
例
範囲内に次のデータがあるとします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
あなたの方法論は最も効率的ではないかもしれないと思いますが、すでに達成したことを利用して、既存のものを活用することができますMATCH
。1つ引く検索する新しい境界を与え、その新しい領域から最後のテキストを返します。この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)