[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『例えば?』(いちご)
Sheet1に受付簿とします。 依頼があった順に打ち込んでいきます。 A B C D E F G 依頼先 行き先 品 名 出発日 到着日 台数 会社名 あ い う 8/1 8/3 1 え
Sheet2を1ヵ月分のデータとします。 Sheet1のFの台数の所に3と入力したら、Sheet2のデータにA〜Eまで3台分ほど 自動でコピー出来ないかな?と思いまして。。。。 コピペすれば良いだけなのでしょうが、こう言う事も出来るのかな?? と思いました。 教えて頂ければ嬉しいです。
>自動でコピー出来ないかな?と思いまして。。。。 自動でとなると、マクロになりますね〜♪ 試しに作ってみましたが、あっていますでしょうか? Option Explicit Sub test() Dim MyA As Variant, MyAry() As Variant Dim i As Long, n As Long, c As Long With Worksheets("Sheet1") MyA = .Range("A1").CurrentRegion n = Application.Sum(.Range("F:F")) ReDim MyAry(1 To n) n = 0 For i = 2 To UBound(MyA, 1) c = 0 Do c = c + 1: n = n + 1 MyAry(n) = Array(MyA(i, 1), MyA(i, 2), MyA(i, 3), MyA(i, 4), MyA(i, 5)) Loop Until c = MyA(i, 6) Next i End With With Worksheets("Sheet2") .Cells.ClearContents .Range("A1:E1") = Array(MyA(1, 1), MyA(1, 2), MyA(1, 3), MyA(1, 4), MyA(1, 5)) .Range("A2").Resize(UBound(MyAry, 1), 5) = Application.Transpose(Application.Transpose(MyAry)) End With Erase MyA, MyAry() End Sub ※Sheet2 の D:E列の書式設定は変更してあるものとしています。 (キリキ)(〃⌒o⌒)b
キリキさん早速ご返信有難うございます! やってみたのですが。。。 Next i でインデックスが有効範囲でありませんとなります。。。。 なぜなのでしょうか?????
いちごさん ご質問の目的は、台数分の行を確保してその行ごとにデータを記入する (Serial No, Description 等)ようなことですか? その場合、入力済みの台数を変更することもありますか? (seiya)
seiyaさんご返信有難うございます。 Sheet1に A B C D E F G 依頼先 行き先 品 名 出発日 到着日 台数 会社名 あ い う 8/1 8/3 3 え と入力すれば Sheet2に A B C D E F G 依頼先 行き先 品 名 出発日 到着日 台数 会社名 あ い う 8/1 8/3 1 え あ い う 8/1 8/3 1 え あ い う 8/1 8/3 1 え となります。台数の変更も有り得ます。
ということは、 H列以降の入力は無いのですね?
>インデックスが.... Sheet1に途中空白行はありませんか? (seiya)
途中に空白行があります。。。。。。 空白行があるとダメなのですね。。。。
あっても大丈夫です、が、 キリキさんにコードを変更してもらう必要があります。(seiya)
変更箇所だけ書きますね
1) MyA = .Range("a1").CurrentRegion -> MyA = .Range("a1",.Range("a" & Rows.Count).End(xlUp)).Resize(,7).Value
2) c = 0 の一行上に If MyA(i,6) > 0 Then を挿入
3) Loop Until c = MyA(i,6) の一行下に End If を挿入
これで試してみてください (seiya)
ありゃま! やっと手が空いて来て見てビックリ! seiyaさんありがとうございます^^ >MyA(i,6) > 0 Then そうですよね〜 こういう気の配り方がσ(^o^;)には足りないんだな・・・ いちごさん、がんばってください^^ 今読み返したら当初は、 >Sheet2のデータにA〜Eまで だったのに、 >Sheet2に > A B C D E F G > 依頼先 行き先 品 名 出発日 到着日 台数 会社名 になったのね? その辺も含めて、seiyaさんのフォロー追加版を! Sub test() Dim MyA As Variant, MyAry() As Variant Dim i As Long, n As Long, c As Long With Worksheets("Sheet1") MyA = .Range("A1", .Range("A" & Rows.Count).End(xlUp)).Resize(, 7).Value n = Application.Sum(.Range("F:F")) ReDim MyAry(1 To n) n = 0 For i = 2 To UBound(MyA, 1) If MyA(i, 6) > 0 Then c = 0 Do c = c + 1: n = n + 1 MyAry(n) = Array(MyA(i, 1), MyA(i, 2), MyA(i, 3), MyA(i, 4), MyA(i, 5), 1, MyA(i, 7)) Loop Until c = MyA(i, 6) End If Next i End With With Worksheets("Sheet2") .Cells.ClearContents .Range("A1:G1") = Array(MyA(1, 1), MyA(1, 2), MyA(1, 3), MyA(1, 4), MyA(1, 5), MyA(1, 6), MyA(1, 7)) .Range("A2").Resize(UBound(MyAry, 1), 7) = Application.Transpose(Application.Transpose(MyAry)) End With Erase MyA, MyAry() End Sub (キリキ)(〃⌒o⌒)b
seiyaさん、キリキさん有難うございます。 これから続きに取り掛かろうと思って除いたら。。。。 頑張ります!!!取りあえずは御礼をと思いました! また疑問が出てきたら質問させて下さい!!
あの。。。上手くいかなくて・・・ #N/Aと表示されるのですが。。。 何故なのでしょうか????
表のレイアウトは、上の例題どおりですよね? #N/Aが出るのは全部ですか? (キリキ)(〃⌒o⌒)b
とらんすぽーずを使わない別案・w3阿 (ROUGE) '---- Sub Strawberry() Dim tbl, ans, i As Long, j As Long, k As Long, n As Long With Worksheets("Sheet1") tbl = .Range("A1:G" & .Range("G" & Rows.Count).End(xlUp).Row) n = WorksheetFunction.Sum(.Range("F:F").Value) If n > Rows.Count - 1 Then MsgBox "多すぎなので中止!", vbExclamation: Exit Sub '<--追加 End With ReDim ans(1 To n + 1, 1 To 7) For j = 1 To 7 ans(1, j) = tbl(1, j) Next k = 1 For i = 2 To UBound(tbl, 1) For n = 1 To tbl(i, 6) k = k + 1 For j = 1 To 7 If j = 6 Then ans(k, j) = 1 Else ans(k, j) = tbl(i, j) End If Next j Next n Next i With Worksheets("Sheet2") .Range("A:G").ClearContents .Range("A1").Resize(UBound(ans, 1), 7).Value = ans .Range("D:E").NumberFormatLocal = "m/d" End With Erase tbl, ans End Sub
キリキさん。返信有難うございます。 表のレイアウトは変わりません。 A〜Cは空白でD〜Gまでは,台数が4台なら4行、#N/Aと表示されます。 ROUGEさん。ご提案有難うございます。 これから,お勉強します!!!
一行追加しますた〜 (ROUGE)
ROUGEさんに質問なのですが。。。。 何度試しても32台までは自動でコピーされるのですが、それ以降はコピーされません。 何故でしょう???
もう一度確認! Sheet1 [A] [B] [C] [D] [E] [F] [G] [1] 依頼先 行き先 品 名 出発日 到着日 台数 会社名 [2] あ い う 8/1 8/3 3 え [3] か き く 8/7 8/7 2 け [4] さ し す 8/13 8/11 1 せ [5] た ち つ 8/19 8/15 2 て こんなレイアウトですよね? どこか違うところあります? 例えば、どこかの行に空欄があるとか。。。 色々なパターンで試してみたのですが、、、 エラーがでて、止まることはあったけど「#N/A」が出ることはなかったんですよね・・・ (キリキ)(〃⌒o⌒)b
> どこか違うところあります? 違うとこめっけw 4行目と5行目は、タイムトラベルしてます〜(不具合関係ないし・・・) (ROUGE)
キリキさん、お手数お掛けしてます・・・ 1から読み直して色々試していたら出来ました!!! Sheet2のH以降に数式を入力したのですが、マクロを実行すると 数式も消えました。。。 マクロを実行しても関数は消えないと聞いた事があった様な・・・ 勘違いだったのでしょうか???? 有難うございました!
>Sheet2のH以降に..... だから最初に質問したじゃないですか... それだと、後から台数を変更するとずれてしますのです (seiya)
でももし、H列以降の数式がA:Gの結果を受けた数式なら。
.Cells.ClearContents を .Range("a:g").ClearContents に変更すれば可能ですね (seiya)
seiyaさん! 便利だと思い後から数式を加えた次第でございます。 ご返信頂いた、お陰で出来ました。 本当に有難うございました。
数式でよかったです。 もし手入力だったら、コードまるっきり書き直しでしたね.. (seiya)
seiyaさん、最後までフォローして頂いてありがとうございますm(_ _)m (キリキ)(〃⌒o⌒)b
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.