- ベストアンサー
エクセルの関数
質問させていただきます。 旅行のバスの台数を計算します。 A1~20までに、はじめから1~20までの数値が入っています。これがバス台数となります。 B1から、バスが運行する度にその日の日付を入力します。 日付が入っているところまでが実際のバスの台数となります。 たとえば、B列の日付がA列の13まで入力されたら、バスの台数は13台ということになります。 それを、C1に自動で入るようなことはできますでしょうか? B列のある場所に値が入ったら、A列のここをイコールとしてC1に出すような。でも常にB列の一番下を参照させないといけないんですよね。 説明が下手で申し訳ありません。 ご理解頂けましたらご教授お願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 3つずつ結合しているということは、範囲はA1からA60、B1からB60ということですか?最初の質問のA1~20までという範囲と随分違いますね。 =COUNTA(B1:B60) としてみてください。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
例データ --はセル結合したしたのセルの下部の罫線を示す 1 2008/1/1 2 3 -- 4 2008/1/2 5 -- 6 2008/1/3 7 -- 8 2008/1/4 9 10 -- 11 2008/1/5 13 -- 14 2008/1/6 15 -- 十分考えていないとは思うが 15を出すにはVBAででも使わないとできないのでは。 14行目は Function fd(a) 'MsgBox Rows.Count 'MsgBox a.Column d = Cells(Rows.Count, a.Column).End(xlUp).Row 'MsgBox d fd = d End Function のような関数で出る。 これは通常関数で導出する回答は出るだろう。 しかしそのところのセルの結合行数(上例は2行だが何行でもありえるので)までは通常関数では出せないと思う。 セル結合状態や結合行数に関する関数は絶無と記憶する。 ーー Sub test02() MsgBox Range("b14").MergeArea.Cells.Count End Sub で1列だけがセル結合なら、上記でセル結合行数が出るから 上記の14+2-1で15行目が最終で15台ということになるのかな。 標準モジュールに Sub test03() d = Cells(Rows.Count, Range("b1").Column).End(xlUp).Row mg = Range("b14").MergeArea.Cells.Count Range("C15") = d + mg - 1 '結果をC15に出す場合 End Sub 結果15台
お礼
ご返答ありがとう御座います。 なかなか私にはレベルの高いお話ですね^^; VBAも勉強してみようと思います。ありがとう御座いました!
- merlionXX
- ベストアンサー率48% (1930/4007)
要はB1からB20までで入力済みのセルの数を数えればいいんですよね? それなら、 =COUNTA(B1:B20) でいかがでしょう?
お礼
おおお!それは目からうろこです! 入力済みのセルの個数出せば同じことですね! と、今やってみたのですが、B列は三つのセルを結合しているせいなのか、エラーが出てしまいました。しかもC1も結合しています。 なにか方法がありますでしょうか?
- works2008
- ベストアンサー率0% (0/2)
こんばんは C1に「=20-COUNTBLANK(B1:B20)」と入力でどうでしょうか
補足
早速のご回答ありがとう御座います。 すみません、説明に不備がありました。 B列のひとつのセルは、B1~3など、三つを結合させています。もちろんA列も同様です。結合された三つのセルが20個縦にならんでいるのです。 この場合、B1:B20が使用できませんよね。。 結合しても方法はあるのでしょうか? 説明不足すみません。
お礼
できました! お手数かけました!ありがとう御座います!