• ベストアンサー

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/17068)
回答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

  • エクセル関数について

    エクセル関数について質問です。 簡単に説明すると特定のセルに特定の数値を入力するとその行の別のセルの数値を別のセルに表示させたい。 たとえば     A      B       C 1  100            2  200      1      100 3  300      1      300 4  400 5  合計            400 上記の様になっていた場合 A列は定数で固定です。B列のセルに1と入力(1でなくてもよい)した行のA列の数値を Cに表示したいのですが、 C列にどの様な関数を使ったらいいんでしょうか?宜しくお願い致します。

  • エクセルで数値の大小を判別する方法について

    とても簡単のように思えたのですが、いざやってみると、あれ?、う~ん!、なかなかうまくできません。どなたかご教授ください。たとえば、次のような場合、    A列  B列  C列 1行  1       小 2行      3 3行 4行  8 5行      5   小 上記の表の意味は、A列・B列のそれぞれ数値の隣接した1行目と2行目、4行目と5行目の数値を比較して、小さい方の数値に"小"をC列に表示させたい(この時、"小"は小さい方の値の行に表示するものとする)。この場合、C列にはどのような関数を設定すればよいのでしょうか?

  • Excel 数値比較について

    A列に基準値、B列に結果の数値、C列にその差異の数値を表示したい場合は、どんな数式?関数?を利用すればいいですか。 例えば, セルA1に10、B1に8の場合、C1に2という数値を表したい。 セルA1に5、B1に10の場合、C1に-5という数値を表したい。 お願いします。

  • エクセルの参照先(仕事で困ってます。)

      A1 B1 C1 D1 1 ■ - - - 2 ■ - - - 3 ■ - - - 4 ■ - - - 5 ■ - - - 6 - - - ● 7 ■ - - - 上の図の様にA列には1~6行にかけて■があるところに数値が入っています。 その時により1行から何行はいるかわからないのですが、 最後の行は空白にして、また次の行から数値が入るようになっています。 空白から空白までの行を合計して(今回はA1~A6)をD6に表示させたいのですが、なにぶんA列には何行入力されるか、空白が来るかなどはランダムです。 このような場合に、D列にはどのような関数を貼り付けたりしたら いいでしょうか? 入力するのはA列の数値だけにしたいということです。                                                                                        

  • 【Excel操作】比較

    はじめまして。 Excel操作について困っていまして、どなたか助けていただけませんか? 【内容】 (1)P列とA列の比較 *P列の1行1行のメンバが”A列の指定した範囲”内にあるかどうか  ⇒ある場合:True、ない場合:False  または  ⇒ある場合:何行目にあるかを表示  または  ⇒ある場合:そのメンバ名かつ同じ行のB列とC列を表示   (例えば、1行目なら「あ」「い」「う」が表示) 〈表イメージ〉 A  B  C    P   Z AA AB 1 あ い う   あ   比較結果 2 ら が ら   わ     3         か 何種類か方法を教えていただけませんか? わかりにくいとは思いますが、助けていただけないでしょうか?

  • OOO CalcやEXCELで次のようなことをなんらかの関数で出来ますでしょうか?

    言葉で説明しづらかったのでシートを画像にしました。A列で最後に出てきたユニークな項目のレコードの数値の合計を出したいです。簡易に例を作ってみたのですが、たとえばAが最後に出たのは6行目、Bが最後に出たのは7行目、Cが最後に出たのは5行目です。その行のB列の数値を合計すると8になります。 A列の項目の出現はランダムで規則性はなく実際は数百種類になり、一度しか出ない場合も多くあります。B列はすべて数値です。 このようなことを関数で実現できますでしょうか?

  • Excelの関数について

    Excelの関数について 今表を作っていて 1日数回データを取って それを1ヶ月ぐらい続ける予定で その結果をExcelの表に入力したいと思っています。 A列に現在値 B列に増加分 C列にA+Bの値を入れたいと思っています。 なので、C列には、C1には=SUM(A1,B1)として セルの右下にポインタを合わせて十字で下まで引っ張って関数をコピーしています。 で、そうするとC列に0が表示されてしまい それはなんとか、ツール→オプション→表示→ゼロ値のチェックを外して解決したのですが C列の合計値は次の行のAのセルに表示したくて 例えば C3の数値はそのままA4に C7の数値はそのままA8にといった感じで で、A2のセルに=C1とかA5のセルに=C4とかしたのですが いちいち関数を埋め込むのは面倒くさいので 下のほうまで関数をコピーしたところ 関数が埋め込まれているので A列とB列にしたの方まで同じ数字が表示されています。 これって消すことはできないのでしょうか? 現在は 最初のA1セルだけに数値を入れたのですが関数を埋め込んだことにより A列とB列すべてにA1セルの数値が表示されています。 まだデータを取っていないのでB列は空白です。 ただ、できれば、下の方に数値が表示されないようにしたいんです。 言葉で説明すると A列とB列に数値が入力されない限り、C列の合計値は表示されない設定にできれば 私の言っているような状況になると思うのですが、そういう事はできないのでしょうか… 教えてください。

  • Excelの関数について

    Excelの関数について 私のExcelは2003です。 表を作っていて A列とB列に数値を入れてその合計をC列に自動的に出すようにするのは C列に「=SUM(A3,B3)」と入れますよね? 1日数回のデータを取り A列とB列に数値を入力し 1ヶ月ほどデータを取り続けるので その分C列に入れた関数を下へセルの右下にポインタを合わせて十字の記号を出して 下へ関数を入れたのですが その場合C列には0と表示されますよね? これは防げないものなのですか? 後、そのC列に表示された合計値を 次の行のA列に表示させたいのですが そういう関数はありますか? C列の合計値に次の数を足して、合計値をどんどん増やしていくので 例えばC1の値をそのままA2に表示。 C2の値をそのままA3に表示 C5の値をそのままA6に表示としたいのですが 関数があったら教えてほしいです。

  • Excelについての質問です。

    エクセルについての質問なのですが、 A列の数値だけをB列から選び出して、そこから更に選び出したBと同じ行にあるCをDに代入したいのですが、どのようにすればよいでしょうか?    A   B   C   D 1  0.1  0.1  5 2  0.5  0.3  10 3  1.2  0.4  20 4  2.3  0.5  40 5  3.7  0.7  80 6  4.7  1.0  160 7  5.9  1.2  320 わかりにくい表ですが、この場合 A1の「0.1」、B列で「0.1」といえばB1になります。それをBと同じ行のC1の数値「5」をD1に代入。 A2の「0.5」、B列で「0.5」といえばB4になります。それをBと同じ行のC4の数値「40」をD2に代入。 A3の「1.2」、B列で「1.2」といえばB7になります。それをBと同じ行のC7の数値「320」をD3に代入。    D 1  5 2  40 3  320 4  ・ 5  ・ 6  ・ という結果にしたいのですが・・・。 これは可能なのでしょうか? わかりづらい質問ですが、宜しくお願いします。

  • エクセルの関数で

    A列B列それぞれに100行ぐらいあり数値が入力しています。 C列にA列とB列のうち数値が小さい方の数値を100行分抽出したいのですが、エクセルの関数でできないでしょうか?

専門家に質問してみよう