- ベストアンサー
エクセルvbaで頁数のカウントを自動で表示させたい
書籍の頁数のカウントでB列の2行目から(1行目はヘッダとして「ノンブル」「頁数」に使用するので)下記のように入力します。 B列2行目から 1-10 10-15 50-100 のようにセルに入力します。 以下ずっと続くものとします。 入力すると自動的に該当ノンブルの右側のセルにトータル頁数を表示させる事はできるでしょうか? 1-10でしたら,10頁 10-15でしたら,6頁 50-100でしたら,51頁 ご教授頂けたら幸いです。よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1です。 > vbaの方ですが,C2セルに=fEvalute(B2)を入れて,Sheet1のコードビューにペーストしましたが機能しませんでした。私のやり方がまずいのでしょうか。恐縮ですが,ご教授願えないでしょうか。よろしくお願い致します。 Sheet1ではなく、標準モジュールに入れてみて下さい。
その他の回答 (3)
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19865)
追記。 他の回答のように「ちょっと複雑な関数を使っても可能」ですが、欠点があります。 それは「全体の開始頁」と「全体の終了頁」が判らない、と言う事です。 列をBとCに分けて入力すると「=MIN(B:B)」で全体の開始頁が、「=-MIN(C:C)」で全体の終了頁が一発で計算出来ます。 こういうデータを入力する時のコツは「2つの意味を持つデータは、2つのセルに分けて入力する」です。 分割して入力しても、書式や表示形式で見た目を調整できるし、表示用のセルを別に作って、そこに2つのデータを繋げて表示する式を書いても良いですし。
お礼
追記ありがとうございました。大変勉強になります。参考にさせて頂きます。ありがとうございました。
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19865)
入力を、B列とC列に分離しましょう。 B1とC1は「セル結合」を用いて、1つのセルにして、見出しを入れましょう。 2行目以降のB列は「右揃え」にします。 2行目以降のC列は「左揃え」にします。 そして「1-10」であれば、B列に「1」を、C列には「-10」と入力します。見た目には「1-10」になります。 「10-15」であれば、B列に「10」を、C列には「-15」と入力します。見た目には「10-15」になります。 すると、ページ数は「=-C2-B2+1」の式で計算出来ます。 1セルに、文字列として「1-10」とかって入力しちゃうと、あとで計算に使うのに面倒になるので、入力するデータに「開始-終了」の2つの意味があるなら「開始」と「終了」の2つのセルに分割して「数値として入力」しましょう。
お礼
ご回答ありがとうございます。視点を変えるとこういう作り方もあるんですね。試してみます。ありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
VBAでやるなら、以下の様なユーザ定義関数を作って、C2セルに =fEvalute(B2) Function fEvalute(sText As String) fEvalute = Abs(Evaluate(sText)) + 1 End Function 関数でやるならC2セルに↓ =INT(RIGHT(B2,LEN(B2)-FIND("-",B2)))-INT(LEFT(B2,FIND("-",B2)-1))+1 こんな感じで如何でしょう
お礼
早速のご回答ありがとうございました。関数では出来ました。大変助かりました。ありがとうございました。
補足
vbaの方ですが,C2セルに=fEvalute(B2)を入れて,Sheet1のコードビューにペーストしましたが機能しませんでした。私のやり方がまずいのでしょうか。恐縮ですが,ご教授願えないでしょうか。よろしくお願い致します。
お礼
ご回答ありがとうございました。標準ルジュールへペーストしてみましたら,できました。ありがとうございました。VBAで処理できるのが理想でしたので,ベストアンサーとさせて頂きます。本当に助かりました。