98でエクセル2000を使用しております。

できるかどうかというのは、
仕事で表を作り、どんどん行が増えていき、並び替えを常にします。
普段は見えなくてもいいが、プリントアウトをした時にページの最後に小計を常に出したい。それもプリントアウトした全ページにです。

現在は表の並び替えをしてから、プレビューを見てページの最後の行を確認してから、最後の行の下に行の追加をしてページ集計をしてプリントアウトしています。

上記のような事をせずに、1ページに20行なら20行と決めて並び替えをしてプリントアウトした時にページ小計を出せるようにできるでしょうか?

説明がヘタで申し訳ありませんが、もしもできる方法があればお願いします。
できなければ、「それはできない!」で決行です。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

前に似たような質問を読んだ記憶があり、検索したらありました。



マクロを使わないとうまくできないみたいですが、不可能ではないようです。

参考にしてください。
(2番目の方が質問内容が近いですが、2番目から1番目を参照してください、となってるので、この順番にしました。)

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=74348,h …
    • good
    • 0
この回答へのお礼

ありがとうございました。がんばってやってみます。

お礼日時:2002/04/07 09:34

>このような事、エクセルでできますか?


よくやっています。OKWebでも似たような質問で数回回答した記憶があります。

印刷の仕方に色々なパターン(リクエスト)があり使い分けています。方法を簡単に列記してみます。
(1)データ用シートと印刷用シートを作り、マクロでデータを印刷用シートに書き込む
  No.74348はこのパターンだった気がします。

(2)データ用シートと印刷用シートを作り、印刷用シートからデータを参照しマクロで頁指定して印刷
  例えば、Index関数を使って参照します。
  (1)、(2)は印刷用シートを好みの形にできます。

(3)データ→集計機能で、『改頁の挿入』、『集計行の挿入』を実行して印刷します。
  この場合、2行目からがデータで1頁20行なら、一番左の列に =INT((ROW()-2)/20)+1
  の式を入れておき、この列を基準に集計します。ソートの後に集計します。

(4)小計をデータの一番下の行に作っておきます。
  小計の計算は、配列数式などで計算できます。
  印刷範囲は小計を含む全ての行にしておき、マクロで印刷頁に該当しない行を
  非表示にしてしまいます。

(5)印刷用シートには固定して小計行を設け明細行も1対1で対応つけてしまう場合(余りない)

(6)一定行ごとに小計行を挿入するマクロを作る場合
  繰り返しなのでたいした負荷ではない。

(7)マクロで、印刷用シートに印刷対応行をコピーしてしまう方法。

(8)アクセスでインポートして印刷する場合もある

・・・・
(3)は質問にある手順と似ているかもしれません。Excelの機能だけを使っていて、余り時間はかかりません。
ご参考に。
    • good
    • 0
この回答へのお礼

色々と回答ありがとうございます。がんばってやってみます。

お礼日時:2002/04/07 09:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDo..Loopステートメントの使い方について

現在、入門書を画面で確認しながら
ExcelVBAの勉強をしています。

Do...Loopで躓いてしまいました。

Do...Loopステートメントの種類は
条件を満たすまでループするもの
Do Until...Loop(ループの前で条件判断)
Do...Loop Until(ループの後で条件判断)
条件を満たす間はループするもの
Do While...Loop(ループの前で条件判断)
Do...Loop While(ループの後で条件判断)

とあって、
例えば、A1からA7まで文字が入力されていて
空白のセルになるまで太文字にするとしたら、

ループの前に条件判断していると
A1が空白だと処理はされず
ループの後で条件判断すると
A1が空白でも処理はされる
とありました。

とすると、
条件判断はループ後にした方が良いと言う事なのでしょうか。
(空白でも処理してくれるので)
自分が処理したいものが
ループ「後」にするのか又は
ループ「前」にするのか
どのように判断すれば良いのかと言うことと、
また、
条件を満たすUntil(まで)とWhile(間)
どちらを使用すれば良いのかの判断方法もわかりません。

超初心者の質問内容で申し訳ありません。

VBAって面白いなぁと思い始めたところで
なんとか理解したいので

教えていただけると大変助かります。

よろしくお願いします。

現在、入門書を画面で確認しながら
ExcelVBAの勉強をしています。

Do...Loopで躓いてしまいました。

Do...Loopステートメントの種類は
条件を満たすまでループするもの
Do Until...Loop(ループの前で条件判断)
Do...Loop Until(ループの後で条件判断)
条件を満たす間はループするもの
Do While...Loop(ループの前で条件判断)
Do...Loop While(ループの後で条件判断)

とあって、
例えば、A1からA7まで文字が入力されていて
空白のセルになるまで太文字にするとしたら、

ループの前に...続きを読む

Aベストアンサー

こんにちは。

#3 の回答者です。
>「Do...Loopは必ずマスターしてください」などと
>書かれているので、「あぁ、そう言うものなんだ」と思っていました。

テレビの高校講座『情報』で、ロボットを制御する場合に出てくるコードなどでは、Do ... Loop とか、While ... Wend という方法が出てきます。ただし、VB系に似ていて別のものです。昔は、そうだったのかもしれません。マスターするというのは、たぶん、プログラム言語としては、避けられないのかって思うのですが、Excel VBAの場合は、それが出てくるのは、なかなか先のことのような気がします。

年間、数百のコードを自分なりに書いているのに、時々、Do ... Loop は、自分で新しいパターンを作る場合は、丁寧に気をつけないと、「無限ループ」に陥ります。単純なものならともかく、少し込み入った条件になると、While ... や Until ... の後に書く条件は、かなり注意が必要なのです。Excelの場合は、複合条件が発生することがたまにあるからです。それは、よほどなれているつもりでも、ミスることがあります。

しかし、にも関わらず、Excelに関しては、使う方法が決まってしまっているように思います。そんなに多いパターンがありません。それは、追々、学んでいったらよいし、一旦、それが決まってしまったら、他に覚える必要はあまり出てこないのです。

たぶん、他のVBAのベテランの方も同様だとは思うのですが、この方法は、全部、パターン化してしまって、「こういう時にはこれしかない」というもので、定石のようなものがあるような気がします。Excel上のパターンで一番多いのは、Find メソッド(検索)です。これは、ヘルプに決まったパターンが出てきますから、それを写せばよいです。

他は、Dir 関数、Open For Input メソッド、また、#4 さんの示した、ADO等(実は、Excelでも出てくるし、避けられない方法です)、かなり上級の部類に入ってきます。

>For...Next,For Each ...Nextの方が
>セル・オブジェクトのアクセス回数を減らすので
>メモリやコードの量が軽減できる?とかでしょうか。
コードの量自体は、多少、減る程度です。メモリに関しては分かりません。

古い人は、VBAやVBのことをスクリプト言語だと揶揄する人がいますが、この種の言語は、実際にコードは見かけ上、上から下に動いていきます。その時に、手間の掛かるものが多ければ多いほど、実行速度は落ちてきます。

>>Do Loop で、Cells の判定をしてしまうと、二重のアクセス
>ごめんさい。この部分がちょっとわからなくて。。

Cells というのは、Range オブジェクトで、それを判定するには、それを取得しなければなりません。入門編では、Range("A1").Select, Cells(1,1).Select と書きます。

また、Cells(1,1).Value = ""
とすると、VBAでは、Cells(1,1) または、Range("A1")というオブジェクトにアクセスして、そのValue プロパティの判定をします。
(つけなくても、暗黙的に、Value プロパティが取得できます)

以下をもう一度みてください。

Sub TestSample2()
Dim i As Long
i = 1
Do While Cells(i, 1).Value <> ""  'セルを取得してチェックし
  Cells(i, 1).Font.Bold = True  'もう一度、セルを取得して、セルのFontプロパティの変更 をしています。
  i = i + 1
Loop
End Sub

つまり、100セルあれば、100 * 2 = 200 回になっているということになりますね。
-----------------------
こちらの場合は、

Sub TestSample1()
  Dim i As Long
  Dim j As Long
  '最終行を取る
  j = Range("A65536").End(xlUp).Row '一度取って、変数jというメモリに入れている。
  For i = 1 To j '最終行まで
    Cells(i, 1).Font.Bold = True 'セルの書式の変更 (各セル1度)
  Next i
End Sub

Range("A65536").End(xlUp).Row で、最後の行を取ってしまっています。
こちらの場合は、100 セルあれば、100 +1 = 101 になっています。

セルの状態によってその処理の仕方が変わる場合は、その回数は増えますが、それでも、少ないはずです。

----------------------
ただし、他の方に突っ込まれるかもしれませんから、これ以外にも、このような方法があります。Range("A1", Range("A65536").End(xlUp)) で、オブジェクトとして取得してしまっているので、その中から、小出しに、オブジェクトを切り出して、変数 c に入れて、処理しています。他にも、Excelには、Excel独特の方法がありますが、それは割愛しておきます。

Dim c As Range 'Variant でも可

For Each c In Range("A1", Range("A65536").End(xlUp))
  c.Font.Bold = True
Next c

これで、何が違うかというと、速さが違ってきます。(わずかな違いですけれども)
メモリの使用量は、私には良く分かりません。減らして使うように考えろとは言われますが、実際に、普段、それほど大きなコードを書くことは少ないのです。例えば、変数で、Variant 型よりも、Range型、もしくは、文字列型、数値型と、それぞれを明確に使い分けるとかは言います。それによって、メモリの変化は、明確には出てこないけれど、処理スピードには影響を受けるとは言います。しかし、時間経過とともにExcel全体のメモリ量が徐々に増えていくことのほうが気になることが多いです。

参考:「MSDN」
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/modcore/html/deconloops.asp

今回の内容には、直接関係ありませんが、
「Office TANAKA VBA高速化テクニック」
(なお、内容は、実験的なものですから、そのコード自体がこうでなくてはならないというものではありません。)
http://officetanaka.net/excel/vba/speed/index.htm

こんにちは。

#3 の回答者です。
>「Do...Loopは必ずマスターしてください」などと
>書かれているので、「あぁ、そう言うものなんだ」と思っていました。

テレビの高校講座『情報』で、ロボットを制御する場合に出てくるコードなどでは、Do ... Loop とか、While ... Wend という方法が出てきます。ただし、VB系に似ていて別のものです。昔は、そうだったのかもしれません。マスターするというのは、たぶん、プログラム言語としては、避けられないのかって思うのですが、Excel VBAの場合は、それが出てく...続きを読む

Q【Excel】小計単位で並べ替えを効率よく行いたいのですが・・

Excelのリストで、約20行おきに小計行があります。その小計の単位で、数値を対象に並べ替えを行いたいのですが、効率よく行う方法がありましたら、ご伝授ください。
なお、行数はデータの変化に伴い毎回異なります。
WindowsXP・Excel2003です。

Aベストアンサー

あまりスマートな方法ではないと思うのですが、お急ぎのようですので。

仮に、A列に数値と小計(SUM関数)のみがすき間無く入っているとして、です。
【1】A列を選択し、置換で「=」を適当な文字に変換します(ここでは「(=)」にしたとします)
【2】隣の列(B列)へは1,2…と行番号と同じ物を入力。(「1」,「2」まで入力して2セルを選択し、選択枠右下の小さな黒四角をダブルクリックすると便利)
【3】更に隣の列(C列)には、1行目は「0」2行目には『=IF(TYPE(A1)=1,C1,C1+1)』と入力して、データ分だけ下へコピーします(前の手順と同様、右下四角ダブルクリックでOK)
【4】C列を選択してコピーし、そのままC列へ「形式を選択して貼り付け」で「値」として貼り付けます。
【5】A,B,C列を選択し、メニューバーの[データ]→[並べ替え]を選択。C列、A列、B列の順番で昇順にしてソートします。
【6】A列を選択し、置換で「(=)」を「=」に変換(戻)します。
【7】B,C列は削除

お試し下さい。

QデータAのキーNo.とデータB2列No.を見てデータBの受注No.をデータAにもってくる。

データAへデータBの発注No.をもってくる
データAは、得意先No.として受注No.と集計No.のどちらかの番号
が入っています。
データBには、集計No.と受注No.とがわかれて入っています。
データA
   1    2
得意先No.  受注No.(データBの受注番号をもってくる)
3456789   589650
7898566   365897
996535    445268
885472    589415   

データAの得意先No.をキーにデータBの集計No.と仮受注No.を範囲を見て
受注No.をデータAの受注No.へもっていく
データB
  1      2     3
集計No.    仮受注No. 受注No.
3456789    878962   589650
7899566    984689   365897
8547895    996635 445268  
7814562    885472 589415

上記のような方式でデータをもってくる関数を教えてください。

データAへデータBの発注No.をもってくる
データAは、得意先No.として受注No.と集計No.のどちらかの番号
が入っています。
データBには、集計No.と受注No.とがわかれて入っています。
データA
   1    2
得意先No.  受注No.(データBの受注番号をもってくる)
3456789   589650
7898566   365897
996535    445268
885472    589415   

データAの得意先No.をキーにデータBの集計No.と仮受注No.を範囲を見て
受注No.をデータAの受注No.へもっていく
データB
...続きを読む

Aベストアンサー

不明点がいろいろとあるので、補足をお願いできますか。

使用ソフトはエクセルでしょうか。
エクセルだとして、バージョンは何でしょうか。
列を番号で表示させているということでしょうか。
データAの1列目には、データBの集計No.か仮受注No.かのいずれかが必ず入るということでしょうか。
集計No.や仮受注No.の並び順には規則性がありましょうか。
データA、Bそれぞれの行数はおおよそどのくらいでしょうか。

Qアウトロックエクスプレスの画面をプリントアウトする方法

アウトロックエクスプレスの画面をプリントアウトする方法を教えて頂けないでしょうか。
最近、仕事でアウトロックエクスプレスの画面を手書きで写そうとしていたら、仕事の相手の人がアウトロックエクスプレスの画面をペイントか何か立ち上げてアウトロックエクスプレスの画面を取り込んだようで、そしてプリントアウトしてくれました。その仕事の相手の人にはちょっとやり方を聞けませんでした。自分で後で、自分のパソコンでやろうとしたら出来ませんでした。
どなたかそのやり方を教えて頂けないでしょうか。

Aベストアンサー

デスクトップPCならキーボードの一番上の行の F12の隣あたりに 『Print Screen』ってボタンがあります

ノートなら 『Fn』か『Ctrl』キーと同時押しが必要かも(機種によります)

プリントスクリーンを押した時点でコピーされてるので

ワードでもエクセルでもペイントでも 何でもいいので起動して 「貼り付け」すればOKですよ

Qwhat shoul I do ..What I should do. ..

教えてください。
英語勉強中 いろいろな???が出てきてしまいました。。
What shoul I do ...What I shoud do ...
これってどうしてこうなるのですか?? どうしてこう違うのですか?
What should I do ..は決まり文句で絶対この形しかないと思っていたのですが。。 すいませ~ん 教えてくださ~い!

それと I do know .. ってどうしてこういう形になるのですか?  なんでDO が突然出てきたですか??
こちらもよかったら教えてくださ~い!

Aベストアンサー

#1の方の回答で解決していますが、例文も挙げて整理しておきましょう。

what should I do?
「私は何をすべきなのだろうか?」という意味でそのまま疑問文として使います。

what I should do
「私が何をすべきか」という意味で文章の中で使います。
文章の中で使うときは語順は変わりませんので注意してください。
(例)
I don't know what I should do.
(私は何をしたら良いのかか分からない。)

DOを使って強調した例文を、会話の中で現れる形で挙げておきます。

How can you be so cruel?
(どうしてそんなに冷たくなれるの?)
I do feel pity for him, but there's nothing I can do about this.
(彼が気の毒だとは思うけどね、僕にはどうしようもないんだよ。)

Why didn't you phone me?
(どうして電話してくれなかったの?)
I did phone you, but there was no answer.
(電話したよ。だけど出なかったじゃないか。)

He does not seem to work very hard.
(奴が一所懸命働いているようには見えないね。)
He does work hard. He just can't get it done quickly.
(あいつは一所懸命やってるよ。仕事が遅いだけさ。)

#1の方の回答で解決していますが、例文も挙げて整理しておきましょう。

what should I do?
「私は何をすべきなのだろうか?」という意味でそのまま疑問文として使います。

what I should do
「私が何をすべきか」という意味で文章の中で使います。
文章の中で使うときは語順は変わりませんので注意してください。
(例)
I don't know what I should do.
(私は何をしたら良いのかか分からない。)

DOを使って強調した例文を、会話の中で現れる形で挙げておきます。

How can you be so cruel?
(...続きを読む

Qエクセル VBA データ並び替えと行削除

エクセル2003にて VBA初心者です。

以下のようなデータがあります。
 列A    列B     列C
 識別   部品番号  ユニット
        A10000   *100
        A10001   *101
        A10002   *102
 *     A10002   *103
        A10003   *104
 *     A10003   *105
 *     A10003   *106
 ・        ・      ・
 ・        ・      ・
 ・        ・      ・

列Bには部品番号が、列Cにはユニット名が記入されています。
同じ部品番号でもユニットが異なる場合には、列Aに*が記入されています。
このようなデータが20,000行ほどあります。

上記のようなデータを以下のように並べ替えたいと考えております。
 列A    列B      列C     列D     列E
 識別   部品番号   ユニット   ユニット  ユニット
       A10000    *100
       A10001    *101
       A10002    *102     *103
       A10003    *104     *105     *106

VBAを利用すればできるんだろうなーと思っていますが、
見当もつきません。
どうぞよろしくお願いいたします。

エクセル2003にて VBA初心者です。

以下のようなデータがあります。
 列A    列B     列C
 識別   部品番号  ユニット
        A10000   *100
        A10001   *101
        A10002   *102
 *     A10002   *103
        A10003   *104
 *     A10003   *105
 *     A10003   *106
 ・        ・      ・
 ・        ・      ・
 ・        ・      ・

...続きを読む

Aベストアンサー

サンプルです。

Sub Macro()
  Dim rng As Range
  Dim i As Long
  Dim j As Long
  
  Set rng = Range("A3", "A" & Range("B" & Rows.Count).End(xlUp).Row)
  Set rng = rng.SpecialCells(xlCellTypeConstants, 2)
  For i = 1 To rng.Areas.Count
    For j = 1 To rng.Areas(i).Count
      With rng.Areas(i).Item(j)
        .Offset(-j, j + 2).Value = .Offset(, 2).Value
      End With
    Next j
  Next i
  rng.EntireRow.Delete
End Sub

>VBAを利用すればできるんだろうなーと思っていますが、
>見当もつきません。
手作業ではどうしますか?
手作業を「マクロの記録」すれば参考コードが得られます。

サンプルです。

Sub Macro()
  Dim rng As Range
  Dim i As Long
  Dim j As Long
  
  Set rng = Range("A3", "A" & Range("B" & Rows.Count).End(xlUp).Row)
  Set rng = rng.SpecialCells(xlCellTypeConstants, 2)
  For i = 1 To rng.Areas.Count
    For j = 1 To rng.Areas(i).Count
      With rng.Areas(i).Item(j)
        .Offset(-j, j + 2).Value = .Offset(, 2).Value
      End With
    Next j
  Next i
  rng.EntireRow.Delete
...続きを読む

QNumberの略はなぜNo.?

『Number』の省略はなぜ『No.』と"o"が出てくるのでしょうか? 逆に『No.』は何の略なんでしょうか?

Aベストアンサー

『NUMBER』の語源である『NUMERO』はラテン語で「数字」を意味するそうです。
『NUMBER』を省略した際に、「NO.」と記入するのは、この『NUMERO』という単語の先頭の「N」と最後の「O」を取り、さらに省略したという意味のピリオドをつけるため「NO.」と書くのだそうです。

http://www2.plala.or.jp/kamkamkam/gimon7/310/310.htm

参考URL:http://www2.plala.or.jp/kamkamkam/gimon7/310/310.htm

Qエクセル:行の並び替え

エクセル初心者です。
行の並べ替えについて教えてください。
A
B
C
D

となっているのを8行おきに順番を並べ替えたいのです。
A
I
B
J
C
K
D

といった感じです。(実際は、65000行あるそうです。)
そんな関数ありますか?
検索しても、これ!というのがひっかかりません。
知識不足により検索ワードの選び方が違うのだと思いますが…。

よろしくお願いいたします。

Aベストアンサー

こんにちは!
外しているかもしれませんが・・・

データが1行目からある場合、
1・9・17・25・・・とまず8行とびのデータを表示させ、その後
2・10・18・26・・・のデータを順に表示させればよい訳ですかね?

そう解釈しての一例です。
データはA列の1行目からあるとします。
列方向にもデータがある場合
B列を1列挿入します。(元のB列以降のデータが右へ1列ずつずれます)

B1セルに
=MOD(ROW(A8),8)
という数式を入れ、B1セルのフィルハンドルでダブルクリック
→ B列すべてを選択 → 右クリック → コピー → B1セルを選択 → 右クリック
→ 形式を選択して貼り付け → 「値」を選択しOK

データ範囲を選択し、B列の昇順で並び替えを行います。
最後にB列すべてを削除して完了!

※ 的外れだといけませんので、別Sheetで試してみてください。m(_ _)m

QNo.

「No.」って一文字なのですが、
今、コピペで貼り付けましたが、どうやったら変換できますか?
「No.」は、3文字入力しました。

Aベストアンサー

こんばんは!

>「No.」って一文字なのですが

なんばー と入力 → 変換してみてください。

環境依存文字になりますが、おそらく表示できると思います。m(_ _)m

Qエクセル 行の並び替え

エクセルでの 行の並び替えの方法で質問があります

多数行のデータの 任意の行同士の並び替え(例えば150行目と450行目を入れ替える)に

ついてですが、今私は、そのような場合、それぞれ 150行目と450行目のデータをそれぞれ

コピーし 挿入したあと 古いデータを削除するという方法で行っています。

これで 入れ替えはできるのですが、入れ替えるデータがたくさんあるときは

時間がかかって困っています。

ほかに もう少し簡単に行の入れ替えを行う方法はあるのでしょうか?あれば

是非教えてください。

初心者なので ごく基本的なご質問で恐縮ですが

宜しくお願い致します 

Aベストアンサー

#1です。

7)は、「並べ替え」ボタンのことです。リボン(メニュー)から選んでも可。


人気Q&Aランキング

おすすめ情報