アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル関数について教えてください。

同じブック内の別シートから該当シートへ文字を抽出する関数を組みたいです。

欲しい文字は行は決まっていますが、列は作業ごとに追加するため列番号が決まっていません。

そのため、特定の行の最終列の値を参照するようにしたいのですが、知識が無く関数が組めません。

お力をお貸しいただけないでしょうか。
よろしくお願いします。

質問者からの補足コメント

  • ご回答ありがとうございます。

    ただし、欲しいのは列数ではなく、特定行の最終列に記載された文字です。

    質問が分かりにくくて、申し訳ない

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/06/28 17:21
  • うーん・・・

    うーん(´・ω・`)
    質問が伝わってないのが残念!!

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/06/28 18:18
  • へこむわー

    セルに入力されている値を参照したいと記載しているにもかかわらず、列数と言っている時点でお察しなんですよ!笑

    No.7の回答に寄せられた補足コメントです。 補足日時:2023/06/29 14:23
  • 特定は特定であり、決まっているので解決するも何も問題にすらなっていないのだよ

    正しく日本語を理解していないことを指摘したつもりだったんだけどねぇ

    お互いに読解力や説明力を鍛えましょう!!
    エイエイ、オー!

    No.5の回答に寄せられた補足コメントです。 補足日時:2023/06/29 14:36

A 回答 (8件)

>欲しいのは・・・特定行の最終列に記載された文字です。



行を特定して、中間に空白があっても、空白でないセルを特定し、最も右側のセルに記載された文字を調べたいという意味なら、以下の数式はどうでしようか。

=LOOKUP(CHAR(37800),シート名!行数:行数)

という数式です。

例えば、Sheet2の1行目に記載された文字のうち、最も右側の列にある文字は

=LOOKUP(CHAR(37800),Sheet2!1:1)

同様にSheet3の100行目に記載された文字のうち、最も右側の列にある文字は

=LOOKUP(CHAR(37800),Sheet3!100:100)

とすればよいということになります。

これは、LOOKUP関数は検索値が見つからない場合、最後の「検索対象値」を返すという性質を利用したものです。
ですから検索値としてほゞヒットしないと思われるCHAR(37800)【黑】をわざと検索値にしています。

但し、各セルには文字列が入力されているものとし、上記数式では数値のセルは無視されます。
    • good
    • 1

こんにちは



横からですが・・・

>欲しいのは列数ではなく、特定行の最終列に記載された文字です。
>質問が分かりにくくて、申し訳ない
>質問が伝わってないのが残念!!
No1様はきちんと理解したうえで、回答なさっていると思われます。
質問者様がその意味を理解なさっていないのではないでしょうか?
セル位置等が不明なので、具体的な式にならないだけで、方法をきちんとお示しになっていらっしゃいますよ。

『御託を言われても、コピペできる式にしてくれなくちゃわからん。』
というのであれば、無理矢理式っぽくするなら・・
1行目を参照する式の例として、
 =INDEX(別シート!1:1,COUNTA(別シート!1:1))
みたいな感じですかね。
上式は、1行目のセルが左から全て順に埋まっている(=途中に空白セルが無い)ことが条件になります。
(1行目のセルが全部空白の場合には、エクセルのバージョンによってはエラーになることがあります)

途中に空白セルがあっても対応したい場合には、
(365環境を想定しても良ければ)
 =TAKE(FILTER(別シート!1:1,別シート!1:1<>"",""),1,-1)
で、求めることが可能です。
(もちろん、空白セルがなくても算出可能です)

※ 式は、別シートと言っているものが「別シート」という名称であると想定して作成してありす。
 ですので、シート名が異なる場合は、コピペしてもエラーになります。
この回答への補足あり
    • good
    • 0

特定の行が3行目、列範囲がJ列まで検索してNULLで無い右端のセル値を取得する例です。




=INDEX(A3:J3,1,COUNTA(A3:J3))
    • good
    • 1

質問そのものに真意が含まれていないって事だよ。



(`・ω・´) もしも「特定の行」まで自動で選択することを解決できていないのであれば、
その行を特定するための条件も示しましょう。

……ってことだったんだけど、遠回し過ぎて伝わらなかったのかな。
条件を正しく出していないことを指摘したつもりだったんだけどねえ。


・・・

まずは「別のシート」の話は忘れて「同じシート上」でやる方法を考えましょう。
それがNo.3の回答者の回答例になります。
この回答への補足あり
    • good
    • 0

誤字脱字だらけでごめんなさい


変え>入力、左>右
    • good
    • 0

私は読解力に自信はなく関数が苦手ですので違えば 流してください


FILTER関数って使えますか?

不明な点があるので
例えば A1セルを文字列書式にして 4:4 と入力
値の欲しいセルに
=INDEX(INDIRECT(A1),MAX(FILTER(COLUMN(INDIRECT(A1)),INDIRECT(A1)<>"")))
と変え 4行目の一番左のセルの値が取得できると思います
(出力セルと同じ行の場合はダメですね)
    • good
    • 0

(´・ω・`) それなら、例で挙げた1行目をその特定の行にすればいいじゃない。



その特定の行をどうやって判断するのか基準が示されていませんので、質問者さんの方で解決しているとして省略して答えています。
示されている条件は「最終列」ですよね。
この回答への補足あり
    • good
    • 0

列数を求めたいという事ですか?



ならば文字列が入力されているセルの数を数えれば良い。
 COUNTA関数
で良いでしょう。

A列からD列までの1行目に文字列が入力されていて、最終行のD列を参照したい……のようなときには、
 ・COUNTA関数で入力されているセルの数を数え「4」を取得。
 ・VLOOKUP関数なら3つ目のパラメータにこの値を使った数値を指定すれば良い。
  参照する行が決まっているなら、OFFSET関数で列方向の値にこの値を使った数値を指定すれば良い。

……こんな感じで良いんじゃないのかな。

他のシートのセルを参照する方法が分からないという事であれば、
同じシートなら
 =A1
 =A1:B10
のように指定するところを
 =Sheet2!A1
 =Sheet2!A1:B10
のように
 シート名 + ! + セル番地
で指定するだけ。
 =SUM(Sheet2!A1:B10)
こんな形になる。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!