• ベストアンサー

エクセルvbaで頁数のカウントを自動で表示させたい

書籍の頁数のカウントでB列の2行目から(1行目はヘッダとして「ノンブル」「頁数」に使用するので)下記のように入力します。 B列2行目から 1-10 10-15 50-100 のようにセルに入力します。 以下ずっと続くものとします。 入力すると自動的に該当ノンブルの右側のセルにトータル頁数を表示させる事はできるでしょうか? 1-10でしたら,10頁 10-15でしたら,6頁 50-100でしたら,51頁 ご教授頂けたら幸いです。よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

ANo.1です。 > vbaの方ですが,C2セルに=fEvalute(B2)を入れて,Sheet1のコードビューにペーストしましたが機能しませんでした。私のやり方がまずいのでしょうか。恐縮ですが,ご教授願えないでしょうか。よろしくお願い致します。 Sheet1ではなく、標準モジュールに入れてみて下さい。

fujiyamax
質問者

お礼

ご回答ありがとうございました。標準ルジュールへペーストしてみましたら,できました。ありがとうございました。VBAで処理できるのが理想でしたので,ベストアンサーとさせて頂きます。本当に助かりました。

その他の回答 (3)

  • chie65535
  • ベストアンサー率43% (8522/19371)
回答No.3

追記。 他の回答のように「ちょっと複雑な関数を使っても可能」ですが、欠点があります。 それは「全体の開始頁」と「全体の終了頁」が判らない、と言う事です。 列をBとCに分けて入力すると「=MIN(B:B)」で全体の開始頁が、「=-MIN(C:C)」で全体の終了頁が一発で計算出来ます。 こういうデータを入力する時のコツは「2つの意味を持つデータは、2つのセルに分けて入力する」です。 分割して入力しても、書式や表示形式で見た目を調整できるし、表示用のセルを別に作って、そこに2つのデータを繋げて表示する式を書いても良いですし。

fujiyamax
質問者

お礼

追記ありがとうございました。大変勉強になります。参考にさせて頂きます。ありがとうございました。

  • chie65535
  • ベストアンサー率43% (8522/19371)
回答No.2

入力を、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つのセルに分割して「数値として入力」しましょう。

fujiyamax
質問者

お礼

ご回答ありがとうございます。視点を変えるとこういう作り方もあるんですね。試してみます。ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

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 こんな感じで如何でしょう

fujiyamax
質問者

お礼

早速のご回答ありがとうございました。関数では出来ました。大変助かりました。ありがとうございました。

fujiyamax
質問者

補足

vbaの方ですが,C2セルに=fEvalute(B2)を入れて,Sheet1のコードビューにペーストしましたが機能しませんでした。私のやり方がまずいのでしょうか。恐縮ですが,ご教授願えないでしょうか。よろしくお願い致します。

関連するQ&A

  • EXCELでのカウント

    こんんちは!いつも使っている簡単な関数ならわかるのですが... 範囲→1列(A列やB列) 範囲内で指定の文字が入力されているセルの数をカウントしたい(返したい)んです。 例)B列に「2」「23」「50」「13」「12」と入力されているとしたら   「2」を入力しているセルをカウントしたかったら   「3」と出てくるように... COUNTIF関数だと「2」を指定したら「2」と入力したセルだけカウントされますよね。(例えば上記例だと「1」と帰ってくる。これを「2」を含んでいるセルの数をカウントしたいんです。 教えてください。 宜しくお願いいたします。

  • 条件にあてはまるデータの数をカウントするエクセルVBA

    下記のようにA列に1~3のコードがありB~E列には測定値があります。 B列以降の測定値のカウント(+3の個数、+2の個数…)を列ごとにVBAでカウントしてます。 A列に関係なくカウントするコードは記述して実行できましたが A列の条件が1の時だけカウントするVBAが良くわかりません。 シート A    B    C  ・・・E 1    -1   +1  ・・・ 1    +2   0 2     0   0 3    -3   0 1    -1   +3 101行目以降 +3    カウント数 … +2      〃 +1      〃 0       〃 -1      〃 -2      〃 -3      〃   A列に関係なくカウントするコード sub カウント() Dim 行 As Long Dim 列 As Long For 列 = 2 To 5 For 行 = 101 To 107 Cells(行, 列).Value = Application.WorksheetFunction.CountIf(Range(Cells(2, 列), Cells(100, 列)), Cells(行, 1)) Next 行 Next 列 End Sub

  • エクセルで特定のセルだけのカウント

     A  B  C   D 1           × 2   ×  ×  × 3 × 4 × 5 ×    × 上記のような表で、列ごとにその列だけが×のセル数をカウントする方法 がわかりません。 例えばA列=2(3、4行目は他の列に×を含まないのでカウント) B列=0 C列=0 D列=1(1行目) となります。 実際には行数が多いため計算式でカウントしたいと思っています。 どうぞよろしくお願いいたします。

  • エクセルでカウントした数を特定のセルに入力したい

    エクセルの関数について質問させてください。 A列  B列   C列 8/9       リンゴ 8/10      ミカン 8/11      リンゴ 8/12      ブドウ 8/13      ミカン 8/14      リンゴ 8/15      ブドウ 上記のような表で、C列でカウントしたリンゴの数を 前日の日付の行の、B列に入力したいのです。 ※今が8/10だとすると、リンゴの数「3」を  8/9の行のB列の欄に入力したい。 COUNTやCOUNTIFSで色々試してみたのですが、 どうしてもうまくいきません。 どうぞ宜しくお願いします。

  • エクセルデータのカウント

    A1:E5にデータが入力してあります。(空白セルもあり) C列、D列、E列のどれか1つのセルにでもデータ(数値) が入っている行の数をカウントして、A6に表示する 方法を教えてください。 たとえばF列に、=COUNT(C1:E1)を計算する行を入れて、 A8で=COUNTIF(F1:F5,">=1")をすれば、できるのだと思うのですが、 そのために行を増やしたくないのです。

  • エクセルで範囲内の検索とカウントについて

    お世話になります。 エクセルの関数ですが、 「A1のセルに'きりん'とあったら、B1:B6範囲内で'きりん'を検索し、該当行のC列に'○'が入力されていればカウントしてC7に数を表示する」というものを組みたいのです。    A   B    C 1 きりん ぞう   ○ 2      とら 3      きりん ○ 4      へび  ○ 5      きりん 6      きりん ○ 7           2 上記のような表の時、B1~B6検索してきりんを探し、C3とC6の○だけをカウントするような事はできるでしょうか。 自分でMATCH関数やCOUNTIFを色々考えてみましたが、どうしてもうまくできませんでした。 よろしくお願いします。

  • EXCELで特定の日付のセルの個数をカウント

    こんばんは。 ある列(例えばH列に)ことなる日付が入力されているとします。 ここでA1セルにカウントしたい日付を入力して、そのH列の中(数十行あります)でA1セルに入力されたのと同じ日付のセルの数のみをカウントするにはどうしたらよいでしょう? 例えば1月1日と2日が混在していて、1日分のもののみをカウントしたい 場合です。仕事で緊急で必要なので、よろしくお願いします。  

  • エクセル表のカウントの仕方について

    エクセルの表でいいカウントの仕方を教えてください。 まず思い浮かべて頂きたい簡単な表の例を示しておきます。行は20行程度というのを思い浮かべてください。 A列には1~10の数字、B列にはあ~んの五十音の一文字のみが、それぞれ重複ありで記入されているような単純な表です。 そこで、A列が「5」かつB列が「あ」という両条件を満たした行の数を、どこかのセルにカウントして表示したいのですが、私の能力では経験不足でできないで困っています。 どうすればいいのか教えていただきたいのです。 よろしくお願いします。

  • word2007で、現在カーソルのあるページ番号、行、列の位置を自動で

    word2007で、現在カーソルのあるページ番号、行、列の位置を自動で表示したいのですが、どこで確認できるのでしょうか? 「ステータスバーのユーザー設定」で「ページ番号」「行番号」「列」「文字カウント」にチェックを付けているので、ステータスバーに「ページ○/○」「行○:列:○」「文字数○○」が表示されています。しかし、文字を入力していって行やページが増えても「ページ○/○」「行○:列:○」の数字は変わりません。なぜか「文字数○○」だけは追加されていきます。ちなみにステータスバーの「文字数」を左クリックして文字カウントすると、カーソルのある位置を表示してくれます。これは文字カウントが自動設定されていないのでしょうか。いろいろ質問を見たのですが、解決できなかったので、どなたかお助けください。

  • Excelで任意の文字を含むセルの1つ下のセルを文字カウント

    関数初心者です。 Excelで任意の文字を含むセルの1つ下のセルを文字カウントする、シンプルでスマートな方法はないでしょうか? 具体的には      A列 1行目 @: インデックス1 2行目 この行の文字数をカウント 3行目 <空白行> 4行目 @: インデックス2 5行目 この行の文字数をカウント 上記のようなケースで「@:」を含むセルの1つ下の行(2,5行目の文字数をカウントしたいのです。 現状では、以下のような不細工な方法でやっています: A列の左隣に列を3つ挿入し(オリジナルのA列がD列になります)、C1に「=FIND("@:", D1)」とした上で関数を最終行までコピー→この例では1,3行目に「1」と表示されます 次にB2に「=IF(C1=1,"TRUE","")」と入力し、これを最終行までコピー→この例では2,5行目に「TRUE」と表示されます 最後にB列にオートフィルタをかけ、TRUEの行だけ表示したうえで、A1に「=LEN(A1)」と入力して、これを最終行までコピーしています→これで、2,5行目の文字数がカウントされます こんなヘタクソな方法ではなく、1つの関数で綺麗に同じ結果を得る方法はないでしょうか? もっと勉強すれば、自分でも出来るかもしれませんが、今すぐ必要なのでどうかご教示ください。

専門家に質問してみよう