[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件になったら、行の挿入』(きぃ)
はじめまして。
すみませんが、どなたか教えて下さい。
注文の商品名と注文数の入った一覧表があります。その、数量が上から累計して20になったら
、1行の空行を挿入したいのですが、何か方法があれば教えて下さい。
宜しくお願い致します。
エクセルバージョン Excel2000
OSのバージョン Windows2000
です。
ダイさん、すみませんでした。具体例を例示致します。
A(品名) B(数量)
1 りんご 15
2 みかん 4
3 バナナ 1
4 メロン 3
5 ぶどう 17
6 いちご 5
7
・
・
・
と、あります。
条件としては、上から数えて合計が20になる毎に、空行の列を挿入したいのです。
例の場合では、3・4列の間と、4・5列の間に、入れたいのです。
説明が下手で、申し訳ございません・・・・
宜しくお願い致します。
>例の場合では、3・4列の間と、4・5列の間に、入れたいのです。 3・4列の間 15+4+1 = 20 4・5列の間 3 = 3 ???
もう一つ >上から数えて合計が20になる毎に そんなに都合よく、「20」になるように並んでいるのでしょうか? 「20」を跨いだ場合は、どうするのでしょう?
(キリキ)(〃⌒o⌒)b
何度も、すみません・・・
例の場合、間違えていました・・・
3・4の間と、5・6の間の間違いです・・・。
あと、正確には20以下になると一列の空行が欲しいので、累計で19・23
のようになった時は、累計19の後に一行入れたいのです。
説明足らずですみませんでした。
度々、申し訳ございませんが、宜しくお願い致します・・・。
こんな感じで如何でしょう?
1)Alt + F11 で、「Microsoft Visual Basic」を出す。 2)挿入 → 標準モジュール 3)出てきた画面に下記コードをコピペ 4)エクセル画面に戻り、Alt + F8 で「test」を実行
標準モジュールへコピペ '---------------- Sub test() Dim i As Long Dim data As Integer i = 1 '数量が2行目からなら、ここを2に変更 Do Until Cells(i, 2) = "" data = data + Cells(i, 2) If data > 20 Then data = 0 Rows(i).Insert Shift:=xlDown End If i = i + 1 Loop End Sub
※1行目から、数量が入っているものとしてます。 2行目からの場合は、変数 i を変更してください。 ※元に戻せませんので、新しく名前を付けるなどして別ファイルでお試しください。
(キリキ)(〃⌒o⌒)b
キリキさん、
早々の御回答ありがとうございます!!
とても分かりやすいご説明で、初心者の私でもマクロの登録出来ました!(涙)
そして、空行の追加も出来ました!
すごく助かります。本当にありがとうございました〜!(^o^)丿
早速、明日からの業務で使用させて頂きます!!
解決済みのところ申し訳ありません。業務上は無いとは思いますが、 もしB列に21以上の数字があるとデータの最下行が65536に達するまで ループしてしまうようなので注意が必要と思います。 キリキさん、改訂版をお願いします。 (純丸)(o^-')b
ひぇ〜!! 大変失礼しました。。。 純丸さん、いつもありがとうございます。 感謝!感謝!
きぃさん、本当に失礼しましたm(_ _)m こちらと、差し替えてみてください。
'--------------- Sub test() Dim i As Integer Dim data As Long i = 2 Do data = data + Cells(i, 2) If Cells(i, 2) >= 20 Or data = 20 Then i = i + 1 Rows(i).Insert shift:=xlDown data = 0 ElseIf data > 20 Then Rows(i).Insert shift:=xlDown data = 0 End If i = i + 1 Loop Until Cells(i, 2) = "" End Sub
今度は大丈夫かな・・・? (キリキ)(;⌒o⌒)b
21以上の数字ががあった場合、その上下に空白行が付くと思うのですが、 キリキさんのコードでは上側が空白行にならず、上方からの 数字と連続してしまいますね。検証ばかりでは何なので、 自分で考え、キリキさんのコードを一部変更してみましたが、 これできぃさんの要望通りになりますか? (純丸)(o^-')b
Sub test() Dim i As Integer Dim data As Long i = 2 Do data = data + Cells(i, 2) If Cells(i, 2) >= 20 Then Rows(i).Insert shift:=xlDown i = i + 2 Rows(i).Insert shift:=xlDown data = 0 ElseIf data > 20 Then Rows(i).Insert shift:=xlDown data = 0 End If i = i + 1 Loop Until Cells(i, 2) = "" End Sub
何だか楽しくなってきました! 純丸さんに、リベンジ〜♪ 20以上の数字が連続した場合、上下の空白(2個分)が出来てしまいますね〜♪ 更に、一番上に20以上があったら空白は必要無いような気がしたので、 少し編集してみました。 如何でしょう?
'--------------- Sub test() Dim i As Long Dim data As Integer i = 2 If Cells(i, 2) >= 20 Then data = Cells(i, 2) i = i + 1 End If Do data = data + Cells(i, 2) If Cells(i, 2) >= 20 Then Rows(i).Insert shift:=xlDown i = i + 1 data = Cells(i, 2) ElseIf data = 20 Then i = i + 1 Rows(i).Insert shift:=xlDown i = i + 1 data = Cells(i, 2) ElseIf data > 20 Then Rows(i).Insert shift:=xlDown data = Cells(i, 2) End If i = i + 1 Loop Until Cells(i, 2) = "" End Sub
(キリキ)(〃⌒o⌒)b
自分のコードの検証は甘くなるなぁ〜。 □\(__;)...ハンセイ キリキさん、お疲れ様でした。完璧と思います。検証合戦?終了〜 (純丸)(o^-')b
キリキさん、純丸さん、本当にありがとうございました!!
早速、試してみました所、結果の出る早さに、驚きでいっぱいです!!
本日の業務から早速、活用させていただきます!!
以前から、「エクセルの学校」は『新・単語検索』で活用させて頂いておりましたが、今回初めて質問させて
頂きました。キリキさん、純丸さん、色々検証頂きましたこと、本当に感謝いたします。
今後も、分からない事を質問させて頂くこともあると思いますが、どうか宜しくお願い致します。
(きぃ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.