- ベストアンサー
エクセルについて ややこしいですが・・・
EXCEL MAC v.Xを使用しています。 うまく説明できるか分かりませんが・・・ 1月1日 AAAAA BBBBB CCCCC Aの値 Bの値 Cの値 DDDDD EEEEEE FFFFFF Dの値 Eの値 Fの値 GGGGG HHHHH IIIIIIIIIIIII Gの値 Hの値 Iの値 1月2日 AAAAA BBBBB CCCCC Aの値 Bの値 Cの値 DDDDD EEEEEE FFFFFF Dの値 Eの値 Fの値 GGGGG HHHHH IIIIIIIIIIIII Gの値 Hの値 Iの値 上の様な表を作っております。 アルファベットは項目です(「売り上げ」みたいな) 値のところは手入力と数式(例えば「=IF(D21&G21&J21="","",D21+G21+J21)」みたいな) となってます。 Q1そもそもこのような作り方は邪道なのでしょうか? 項目を右方向になが~く作ったほうがいいのでしょうか? Q2この様な表のため数値を集計しようとするとうまくいきません。 例えばあるセルに各日の「Aの値」の合計を集計しようとして (「Aの値」には上の「=IF(D21&G21&J21="","",D21+G21+J21)」の様な数式をいれてます) 「=B2+B8+B14+B20・・・・」と入力するとエラーになります。 やはりやり方が間違っているのでしょうか? Q3別の表に普通に「Gの値」を日付順に縦に並べたく、最初のセルに「=B6」と 入力し2段目に「=B12」3段目に「=B18」と6段づつふやして入力し 下方向に連続コピーしようとしてもうまく増加せずコピー出来ません セル間隔のあいた数式の連続コピーはできないのでしょうか? これも、そもそも元の表がわるいからでしょうか? この文章でうまく伝わるか分かりませんが とにかく自我流で本を片手に作っています。 以上、ややこしいですがよろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
A1: ある意味では邪道です。 データベース的な使い方をしたいなら、横方向へ延ばして 各日毎に1行とした方が、検索等で使いやすく(使える)なります。 A2: これは、多分IF関数で、「""」を使っているからです。 関数の結果が「""」になっているセルを計算に使うとエラーになります。 「""」でなく「0」を使うべきです。 「=IF(D21&G21&J21="","",D21+G21+J21)」でなく 「=IF(D21&G21&J21="",0,D21+G21+J21)」とし、 ゼロを表示したくなければ、表示書式を「#,###;-#,###;」としてください。 A3: > そもそも元の表がわるいからでしょうか? そうとも言えます。使うときだけでなく作るときのことも考慮して 表を設計すべきです。 連続コピーしたいなら、「=B6」でなく =INDIRECT("Sheet1!$B"&ROW()*6) とすべきです。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17070)
こういう表構成になったのはなぜですか。 多分エクセルの特長(初心者は関数の偏重)を理解しないで、表設計を行ったのでは。ひょっとすると、下記の(2)(3)の理由があるのかも知れないが。 (1)質問者の好み (2)入力するデータの入った原書がこれに近い形。 (3)入力時に横スクロールを質問者が嫌った (4)その他(印刷したとき見やすいと質問者は感じるとか) それらに対し、対策知識を増やし、1つずつつぶしていかないとならない。 関数やVBAを使って「リスト形式」(特別な意味があるのを判りますか。判らなければ、「エクセル リスト形式」でWEB照会のこと)に組み変えるようにすべきです。原本的でなくても作業表としてでも作るべきです。 やり方は基本は質問者が考えることだが、わからなければ、それだけに絞って質問したらよい。 計算が多いならリスト形式にすべきです。
お礼
ありがとうございます。 回答は(1)と(3)です。 考え直してみます。
- mshr1962
- ベストアンサー率39% (7417/18945)
Q1.邪道とまではいいませんが データベースとして考えるなら1行目が見出しで 2行目から各日のデータのほうが良いでしょうね。 Q2.エクセルの数式における考え方ですが 「=B2+B8+B14+B20」の場合、B2,B8,B14,B20のどれかひとつでも数値または空白でない場合エラーになります。 ■SUM関数で集計(数値以外のセルを0とみなします) 「=SUM(B2,B8,B14,B20)」 ■他の列に集計の目印となる項目があるなら 「=SUMIF($A$2:$A$20,項目,B$2:B$20)」 ■均等な行間隔の集計なら(下記はB2から6行毎の場合) 「=SUMPRODUCT((MOD(ROW(B$2:B$20)-2,6)=0)*(B$2:B$20))」 Q3. ■INDIRECT関数でセル座標を間接参照する。 「G2=INDIRECT("Sheet1!B"&(ROW()-1)*6)」 ■OFFSET関数でセル座標を間接参照する。 「G2=OFFSET(Sheet1!$B$6,(ROW()-2)*6,0)」
お礼
ありがとうございます。 ちょっと私のスキルにあまる事をやろうとしていた様です。 シンプルにしたほうがいいみたいですね
#1です。 もし、AやDの値も取りたいのであれば、 別シートの1行目から指定するのであれば Aの値の場合: =INDIRECT("Sheet1!$B"&(ROW()-1)*6+2) Dの値の場合: =INDIRECT("Sheet1!$B"&(ROW()-1)*6+4) とします。 ご参考まで...
お礼
ありがとうございました。 ちょっと一から考え直してみます。