
毎月の会員来店記録管理を以下のような表でしています。
|A| B | C | D | E | F | G | ~AK
--+--+--------+--------+--------+--------+----------+----------+--------
2| | NO | 氏名 | 入会日 |来店累計|直近来店日|02/01(火)|02(水)
--+--+--------+--------+--------+--------+----------+----------+--------
3| |A-04-100|○山△子|04/10/10| 25回 | 02(水) | (空欄) | 12:55
--+--+--------+--------+--------+--------+----------+----------+--------
4| |A-04-101|□村×代|04/10/11| 12回 | 01(火) | 10:25 | (空欄)
--+--+--------+--------+--------+--------+----------+----------+--------
G2~AK2はF2に1を足していき、29日以降はMONTH関数の判定で""となっています。
F列およびG2~AK2の書式設定は「dd aaa」となっています。
B~D列はシート「会員名簿」から参照しています。
E列は=IF(D3<>"",COUNT(G3:AK3),"")等として求めています。
G~AK列は来店時間を手入力しています。
以上からF列の値を求めたいのですが、次のINDEX関数では領域番号に何を指定
すれば良いのか判りませんでした。
=INDEX($G$2:$AK$2,1,?)
まるでHLOOKUP関数の逆のようですが、なにか良い方法があればお教え下さい。
No.2ベストアンサー
- 回答日時:
こんばんは。
No.1さんの配列数式でできませんか?
試してみましたが、こちらではできましたけど・・。
>「#VALUE!」が返ってきてしまいました。
配列数式になっています?
{ }が数式の前後についていなければ配列数式になっていませんよ。
{ } ←は手入力ではダメです。
もう一度、{ }のない数式をコピーして貼り付けてください。
<形式を選択して貼り付け>-<テキスト>
↓
そのあと数式バーにカーソルを置いて、Ctrl + Shift + ENTER で確定
↓
自動的に { } が前後に入ります。←コレが配列数式です。
---
◆ついでに配列数式を使わない方法として、
F3セルに↓ではどうでしょうか?
(F列も日付形式にしておいてくださいね)
-----------------------------------------
=LOOKUP(MAX(G3:AK3)+1,G3:AK3,$G$2:$AK$2)
-----------------------------------------
この回答への補足
配列数式の説明、ありがとうございます。
入力については問題なくできていました。
エラーの原因はANo.4のDoragonFangさんのご指摘の
通りでした。
結局、29日以降のMONTH関数の判定を活かせるのは
AloneAgainさんのLOOKUP関数とANo.3のDoragonFang
さんのINDEX関数でした。
今回はAloneAgainさんのLOOKUP関数を利用させて
頂きました。ありがとうございました。
補足に書いてしまいましたが、今回は
AloneAgainさんのLOOKUP関数を利用させて
頂きました。ありがとうございました。
No.4
- 回答日時:
ANo.3です。
追記です。>お教え頂いた配列数式を入力してみましたが、「#VALUE!」が
>返ってきてしまいました。
題意にあるように、29日以降、””になっているからでしょう。
配列数式は範囲内をすべて計算しようとしますが、29日以降の2行目が空欄("")なので、文字列と解釈し、計算できないと判断して、エラーになるのではないでしょうか。
No.3
- 回答日時:
INDEX関数を使うなら、
=INDEX(G$2:AK$2,1,MATCH(MAX(G3:AK3),G3:AK3,1))
という式で出来ると思います。
MATCH関数で入力されている時間の最大値を探し、
その位置を列位置として返しています。
もっとも、ANo.2さんのlookupの方が簡単ですが・・。
MATCH関数についてはヘルプで使用例も読んで
いたのですが、すっかり失念していました。
ANo.4のご指摘も含めてありがとうございました。
いろんなやり方があるものだと関心しました。
No.1
- 回答日時:
配列数式を使ってはどうでしょうか。
INDEXを使う代わりに、F3に
=MAX((ISNUMBER(G3:AK3))*(G$2:AK$2))
と入力して、Ctrl+Shiftを押しながらEnterを押します。
(この押し方は配列数式を入力する方法です。数式バーには{=MAX((ISNUMBER(G3:AK3))*(G$2:AK$2))}と表示されます。)
これをF4から下に必要なだけコピーします。
F3から下の書式は dd aaa にしておきます。
上に書いた式の意味は、「G3:AK3の中の数値セルを1、非数値セルを0とし、これをG$2:AK$2の各セルとそれぞれ掛け算し、その中で最大のものを求めなさい」という意味です。
この回答への補足
早速のご回答、ありがとうございます。
お教え頂いた配列数式を入力してみましたが、「#VALUE!」が
返ってきてしまいました。
>G3:AK3の中の数値セルを1、非数値セルを0とし、
ですが、ISNUMBER関数の返値はTRUEかFALSEですので、
0、1に置き換える必要があると思うのですが、IF関数
ではうまくいきませんでした。
考え方自体は的を得ていると思いますので、自分でも
更に試行錯誤してみたいと思いますが、もし良い案が
ありましたらお教え願います。
ANo.2のAloneAgainさんとANo.3のDoragonFangさんの
ご指摘で表の一部修正で利用可能なことが判りました。
未だISNUMBER関数の返値(TRUEかFALSE)がなぜ計算に
利用できるのかは判らずじまいですが、配列数式の
利用法を含めて新しいEXCELの使い方をご指導頂けて
大変ありがたかったです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】実行時エラー '424':...
-
エクセルのVBAで集計をしたい
-
【マクロ】数式を入力したい。...
-
【マクロ】【配列】3つのシー...
-
【マクロ】元データと同じお客...
-
【マクロ】【相談】Excelブック...
-
他のシートの検索
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
エクセルシートの見出しの文字...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
エクセルの複雑なシフト表から...
-
空白のはずがSUBTOTAL関数でカ...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ】【画像あり】❶ブック...
-
5単位で繰り上げしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報