• ベストアンサー

EXCEL操作について教えてください!

1.B3/B2*100の結果をB4に出力するのですが、「0であれば0と表示(0.0ではなくて)(文字列ではなくあくまで数値として表示)」「マイナスであればAと表示」「100であればCと表示」「DIV/0!であればSと表示」「それ以外であれば小数点第2位を四捨五入して第1位まで表示」という条件はIF関数とかISERROR関数とか使ってどう書けばよいでしょうか? とてもややこしく感じて答えが出ません。お助け下さい。 2.また別の作業なのですが、例えばA列からC列に順番に大分類、中分類、小分類と項目を決め、数値を集計してあるような場合に、小分類が多い為に大分類が用紙3枚くらいに渡るとします。1ページ20行の設定で、ある1つの大分類内の小分類が合計54行ある場合などです。 普通このような場合、A列の1行目から54目までに、外枠にのみ罫線を引くと思いますが、そうしますと実際に印刷すると1ページの最後の行、2行目の最後の行に罫線が無い不自然な結果となってしまいます。 緊急避難的に、見た目不自然にならないよう途中に罫線を入れることは可能ですが、行の追加や削除があった場合、そのたびに罫線を引きなおさなければいけません。 改ページになるところは必ず罫線で閉じる設定が出来る便利な方法はありませんか?

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

  • ベストアンサー
回答No.4

回答しておいてから質問で申し訳無いですが、 (1)例えば、B2に9999、B3に9998と入力されていると   B3/B2*100=98.9899・・・   となって、小数第2位を四捨五入すると、100になるのですが、   その場合もCと表示するのでしょうか? その場合は、 =IF(B2=0,"S",IF(ROUND(B3/B2*100,1)=100,"C",IF(B3/B2<0,"A",ROUND(B3/B2*100,1)))) 又は =IF(B2=0,"S",IF(ROUND(B3/B2,3)=1,"C",IF(B3/B2<0,"A",ROUND(B3/B2*100,1)))) にしてください。 (2)例えばB2に10000、B3に1と入力されていると    B3/B2*100=0.01    となって四捨五入すると0ですが、    0.0と表示するのか、0で良いのか?    #3では0で表示されます。 いろいろと数式を書いてしまったので、混乱してしまったらすみません。 もし混乱してしまったら、 1.上記(1)について 2.上記(2)について 3.上記(2)と同じような事ですが、   例えば B2に-10000、C2に1と入力されていると   B3/B2*100=-0.01   になって四捨五入すると0ですが   [A]と表示するのか   0と表示するのか 4.マイナスは[A] は見た目のみ[A](セルの値はマイナスの数値)   又は、セルの値も[A]   のどちらか? 5.B2又はB3に文字が入力されていた場合はどうするのか?   (B3/B2*100が#VALUE!になる場合の処理) 以上についての補足をいれて頂ければ、 (大体は四捨五入する前の値を処理するのか、した後の値を処理するのかと言うことですが) もう1度、きちんと回答し直します。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

前半のに付いて 関数式でもご回答がでています。式が長くなります。 それでユーザー関数を作るやり方をやって見ました。 VBAを使うのですが、Case文の使い方だけ勉強すれば他のことは不必要です。他に応用が効きそうです。 全体では文字数も関数に比べ多いですが、論理を思いつくまま記述が出来るので、たやすい面もあります。 (1)書式はC列を「数値」の「標準」にします。0を0と表示させるため。 (2)ALT+F11でVBE画面にして ALT+I、ALT+Mで標準モジュール画面にする。 Function xyz(a As Range, b As Range) Select Case b Case 0 xyz = "S" Exit Function End Select Select Case a / b Case 0 xyz = 0 Case Is < 0 xyz = "A" Case 100 xyz = "C" Case Else xyz = Round(a / b, 1) End Select End Function をコピーし標準モジュールへ貼りつける。 (3)A列、B列に数値を入れるとして、C1に関数 =xyz(A1,B1)といれ、C2以下に複写します。 (4)結果一例 0 -3 0 1 -3 A 100 1 C 20 0 S 12 0 S 13 4 3.2 13 4 3.2 0 3 0 0 3 0 2 9 0.2 0 3 0

回答No.3

1について >100であればCと表示  B2=B3の時 >DIV/0!であればSと表示  B2=0の時 >マイナスであればAと表示  B3/B2<0の時 >0であれば0と表示・それ以外であれば小数点第2位を四捨五入して第1位まで表示  セルの書式設定でユーザ定義[0.0;;0]と入力する  (0以上の時には0.0表示,0の時には0表示で対応する) でいいと思いますので、 =IF(B2=0,"S",IF(B2=B3,"C",IF(B3/B2<0,"A",ROUND(B3/B2*100,1)))) セルの書式設定でユーザ定義[0.0;;0] でどうでしょうか?(間違っていたらごめんなさい) 文字が入力された場合の処理はしてませんが、必要なら =IF(ISERROR(B3/B2),"S",IF(B2=B3,"C",IF(B3/B2<0,"A",ROUND(B3/B2*100,1)))) (この場合、文字入力の時にもSが表示されます) >マイナスであればAと表示の部分は見た目がAでよければ、 セルの書式設定でユーザ定義[0.0;"A";0] という方法もあります(セルの中身はマイナスで入っていますが) #1さんの ROUND(B3/B2*100,2)は小数点第3位を四捨五入しているように思うのですが、 もし私の勘違いでしたら、私の方を直してください。 2については 私もよくわかりません。 1ページ20行と決まっていれば、 A1セルで 「書式」→「条件付き書式」 「数式が」=MOD(ROW(A1),20)=0 「書式」ボタンで下線を引いて 後は、印刷範囲全てにコピーしておけば可能だと思います。 ・最初に印刷範囲を選択してから、条件付き書式を設定すれば簡単です ・1行目が見出しだったりすると少し式を変えないといけません #2さんの方法は、各ページの最初の行は罫線付きますが、 最後の行にも罫線入りますか?(勘違いならすみません)

freefm
質問者

お礼

ご回答ありがとうございました。とてもよいヒントをいただけましたのでじっくり検討してみます。

  • ISO9002
  • ベストアンサー率31% (101/318)
回答No.2

2.について回答(アドバイス)します。 印刷する場合は、見出しをつけますよね。 2ページ目以降にも行のタイトルである「大分類、中分類、小分類」を表示するほうが、見る人にとっては親切だと思います。その場合の操作方ですが(ご存知でしたらすみません) 1.[ファイル]-[ページ設定] 2.「シート」タブを選択 3.「印刷タイトル」の「行のタイトル」で「大分類、中分類、小分類」が書かれた行を選択 これで全てのページに見出しがつくようになります。 これにより罫線が消えることはなくなります。 ストレートな回答ではありませんが、ご参考まで。

freefm
質問者

お礼

ありがとうございました。参考にします。

  • Fat01ton
  • ベストアンサー率46% (122/264)
回答No.1

freefmさん こんばんは 1.については以下の式ではどうでしょう 質問中の”Aと表示”というのは文字としてAと  表示するという意味で書きました。 わかりにくい式ですがご参考になれば幸いです。 =IF(ISERROR(B3/B2*100),"S",IF(B3/B2*100=100,"C",IF(B3/B2*100<0,"A",IF(B3/B2*100=0,B3/B2*100,ROUND(B3/B2*100,2))))) 2.についてはわかりませんでした。  お役に立てず申し訳ありません。

freefm
質問者

お礼

参考にさせていただきます。ありがとうございました。

関連するQ&A

専門家に質問してみよう