advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 103 for フォーマット 自動 印刷 (0.009 sec.)
フォーマット (1423), 自動 (14517), 印刷 (5709)
[[20090413175030]]
#score: 8137
@digest: f65a61ea46a2a96ed2e305fedc923753
@id: 42912
@mdate: 2009-10-13T10:12:59Z
@size: 67256
@type: text/plain
#keywords: 管書 (758183), 品予 (409416), 管数 (252662), 保管 (187483), 書1 (160742), 品枚 (150907), pli (148971), 納品 (109266), pr (96629), 書印 (82084), 定表 (81148), 型番 (77687), ーサ (52156), mako (50146), 品先 (44312), 表! (37718), 予定 (30187), 一枚 (29655), 表シ (22719), 印刷 (22575), 納入 (20036), 品数 (19926), 合算 (19532), 枚数 (19239), 枚目 (18232), カラ (17374), lr (14427), 入先 (14336), 表") (12283), 発注 (11987), printout (11273), pg (10340)
『割合算出』(mako)
設定している枚数からいくつか商品を保管しておきたいです。 枚数ごとに決められた割合で出された枚数を保管するように今表を作成しています。 まず1シートに表があります。↓ 商品NO・納品業者・保管枚数・納品枚数 1111 ABC 4 25 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ---------------------------------------------- 納品枚数を入力したら、保管枚数が算出されるようにしたいです。 保管枚数の設定は下記のように設定しています。 25〜50→16% 51〜90→14% 91〜150→13% 151〜280→11% 281〜500→10% 501〜1200→8% 1201〜3200→8% 3201〜10000→8% 10001〜35000→8% なので25枚の場合は25枚の16%を保管したいので4枚と出るように 1シートに設定をしたいです。 ただ160枚の場合11%なので17.60枚とでるのですがこの場合は18枚と出したいです。 また、93枚の場合は13%なので12.09とでるのでこの場合は12枚と出していきたいです。 小数点の設定が難しいようだったら小数点のまま算出しても構いません。 方法を教えてください。 宜しくお願いします。 ---- VLOOKUP関数が使用できると思います。 [C] [D] [E] [F] [G] [1] 保管枚数 納品枚数 仕切 パーセント [2] 4 25 25 16% [3] 18 160 51 14% [4] 12 93 91 13% [5] 151 11% [6] 281 10% [7] 501 8% [8] 1201 8% [9] 3201 8% [10] 10001 8% F2:G10に対応表を作成し、C2セルに =IF(OR(D2<25,D2>=35000),"",ROUND(D2*VLOOKUP(D2,$F$2:$G$10,2,TRUE),0)) VLOOKUP関数で、対応するパーセンテージを求め D2セルの値と掛け算します。 結果を小数第一位で四捨五入し、その値を表示します。 ただし、D2セルの値が25未満 または 35000以上のときは 「""」を返します。 (HANA) ---- (HANA)さんありがとうございます。 説明が不足していた部分があるので補足させていただきます。 この保管は毎日行っていくもので、 毎朝、納品枚数を他のPCからデータをもらってきます。 そのデータをシートに貼り付け、何百という商品が入ってくるため、 パーセントのデータの順番通りに納品枚数がでてこないことが多いです。 なのでひとつのセルに50と入力したら16%の8と、 280と入力したら31とでてくるような式があったら教えていただきたいのですが。 25〜50→16% 51〜90→14% 91〜150→13% 151〜280→11% 281〜500→10% 501〜1200→8% 1201〜3200→8% 3201〜10000→8% 10001〜35000→8% 上記のような数字を入力した時点でそのパーセントの保管枚数がでてくるように することは不可能でしょうか・・。 何度も申し訳ありません。 宜しくお願いします。 (mako) ---- 試してみてから、その様に仰ってます? 実際に試されたのなら シートのどこに 何をどの様に配置して、 どの数式がどこに入っていて 何の値がどこに入っているときに どの様な結果になって欲しいところ どの様な結果になってしまうのか 実際のセル番地と、上手く行かないデータを使って ご説明下さい。 (HANA) ---- 内容がいきなりとんで申し訳ございませんでした。 下記のような式を入力したのですが、 保管数がなぜか多い数字ででてきてしまっています・・。 列Nに入力しました。 =IF(OR(P2<25,P2>=35000),"",ROUND(P2*VLOOKUP(P2,$O$2:$U$21,2,TRUE),0)) 列N O P U 保管数 仕切り数 納品枚数 パーセント -------------------------------------------- 2 501 790 8% 3 37920 501 790 8% 4 37920 501 790 8% 5 37920 501 800 8% 6 38400 501 800 8% 7 38400 501 800 8% 8 38400 151 183 11% 9 8784 91 104 13% 10 4992 91 101 13% 11 4848 13 136 13% 12 6528 13 25 50 16% 14 #N/A 25 48 16% 15 #N/A 12 まだまだ下に続いてます。 --------------------------------------- また、Nの2んp保管数はでなく、Nの14,15には#N/Aの表示がでてしまいます・・。 関数は本当に苦手で分かりません・・。 どうか宜しくお願いします。 (mako) ---- えっと・・・確認なのですが O,U列は事前に用意されているのですか? P列の値からN列が出れば良いのですよね? それとも、一度O列とU列の値を求めるのですか・・・? また >F2:G10に対応表を作成し と書きましたように【対応表】を作成して下さい。 【対応表】は、F2:G10に私が載せたのと同じ表を作成して下さい。 実際はF2:G10には作れないと思いますので どのセル番地に作ったか セル番地を教えて下さい。 (HANA) ---- (HANA)さん!ありがとうございます! O,U列は事前に用意してなかったので勘違いして作成してしまいました。 P列の値からN列がでるようにしたかったです。 対応表を作成していなかったので今作成し、 式を直したらできました!ありがとうございます。 対応表を隣のシートに持っていって そこから反映するようにしたいのですが方法を教えていただけますでしょうか・・。 今まで作成していたシート名は納入予定表です。 隣に対応表というシートを作成してN列の値をだしたいです。 いつも何度もすみません。 宜しくお願いします。 (mako) ---- 自分のシート内に対応表を作成し 希望する結果が得られる式は完成したのですね? でしたら、その対応表の範囲を切り取って 別シートに貼り付けて下さい。 数式が自動的に変更されますので 元のシートに戻って数式を確認して下さい。 その様な数式にすれば、参照先のセルを 別のシートにすることが出来ます。 (HANA) ---- (HANA)さんいつもありがとうございます! できました! 度々の質問で申し訳ないのですが、 この下記の表は毎日更新されていき、型数が何十、何百となっていくのですが、 ひと型番ごとに保管書というのを作成しています。 下記の表の納品名、型番、カラーサイズ、商品名、発注分類、保管数/納品枚数を 【保管書】として作成し印刷していきたいです。 【保管書】は別のシートにフォーマットを作成していて、 納品予定表シートの情報を保管書に反映させたいです。 また、ひと型番ごとに印刷をしていかなければならなく、 何十、何百ある型番の保管表の印刷を朝の20分で終わらせないといけません。 納品予定表シート ------------------------------------------------------------------ 納品先名 型番 カラーサイズ 商品名 発注分類 保管数 納品枚数 ------------------------------------------------------------------ ABC 123456 1900 ABAB 新規 63 790 DEF 789456 2313 CDCD 新規 63 790 GHI 7894561 5623 EFEF 追加 64 800 まだ下につづく。 ----------------------------------------------------------------- 保管書シート↓ ------------------------------- 納入先__ 型番___ 品 名___ カラーサイズ___ 保管数/納品数___/___ 発注分類____ -------------------------------- 納品予定表はデータを他からもってきて、貼り付けるのですが、 早くいっぺんに印刷できる方法があったら知りたいです。 何かいいアドバイスをお願いします! 本当に何度も申し訳ありません。。 (mako) ---- それでは、各セル番地を教えて下さい。 数式を作るにしても、何をするにしても セル番地が共有できていないと、話が面倒なので。 (HANA) ---- ありがとうございます。 下記記載してみました。 これで大丈夫でしょうか・・。 納品予定表シート C D F H I N O ------------------------------------------------------------------ 2 納品先名 型番 カラーサイズ 商品名 発注分類 保管数 納品枚数 ------------------------------------------------------------------ 3 ABC 123456 1900 ABAB 新規 63 790 4 DEF 789456 2313 CDCD 新規 63 790 5 GHI 7894561 5623 EFEF 追加 64 800 まだ下につづく。 ----------------------------------------------------------------- 保管書シート↓ セルNO A セルNO S -------------------------- ---------------- 7 納入先__ 11 発注分類____ 8 型番___ 9 品 名___ 10 カラーサイズ___ 11 保管数/納数___/___ -------------------------------- 宜しくお願いします。 (mako) ---- 先に確認をさせて下さい。 納品予定表シートは 1行目が入力無し(或いは今回の処理に関係の無いデータ) で、2行目から見出しが入っているのですか? また、A列も未使用ですか? 保管所シートは、ご提示のセル番地を見ると A7 納入先__ と成っている様ですが 例えば、納品予定表シートの3行目のデータで有れば A7に 納入先ABC と成れば良いのですか? 感じとしては A7に 納入先 B7に ABC と成った方が良さそうに思いますが。 (イメージだけの問題ですけどね。) A11なんかは 保管数/納数63/790 ですか? サンプルデータは 2桁&3桁 のデータしか無いので 一つのセルに入れても 同じ位置に表示されますが そうでない場合は、桁数がそろっていた方が見やすいのでは無いかと思いますが。 (これもイメージですよ。) それから、数字をカンマ区切りなどで表示させたい場合は 一つのセルに一つの数値を入れておいた方が 数式も簡単になりますが。 (印刷さえされていれば良いのですかね。) (HANA) ---- いろいろご指摘ありがとうございます! >納品予定表シートは 1行目が入力無し(或いは今回の処理に関係の無いデータ) で、2行目から見出しが入っているのですか? はい。一行目はその日ごとの日付が入っていて、 二行目見出しがついています。 >また、A列も未使用ですか? 今、データを拾ってきた状態のままで作成していたので、 いらないデータがたくさんあり中途半端になってしまってました・・。 なので下記のように訂正します! 納品予定表シート A B C D E F G ------------------------------------------------------------------ 2 納品先名 型番 カラーサイズ 商品名 発注分類 保管数 納品枚数 ------------------------------------------------------------------ 3 ABC 123456 1900 ABAB 新規 63 790 4 DEF 789456 2313 CDCD 新規 63 790 5 GHI 7894561 5623 EFEF 追加 64 800 まだ下につづく。 ----------------------------------------------------------------- >A11なんかは 保管数/納数63/790 ですか? ごめんなさい。下記のように分けることにします! 保管書シート↓ セルNO A セルNO B -------------------------- ---------------- 7 納入先__ 11 発注分類____ 8 型番___ 9 品 名___ 10 カラーサイズ___ 11 保管数 12 納数___ -------------------------------- >それから、数字をカンマ区切りなどで表示させたい場合は 一つのセルに一つの数値を入れておいた方が 数式も簡単になりますが。 上記についてちょっと理解ができませんでした・・。 申し訳ないです。。 毎朝大量の型数を保管表で印刷しなければならないので うまく作成したいのですが、分からないことも多く、 どうやったら一番きれいな表ができ、印刷しやすいのか悩んだんですが、 今作成しているので一旦仕上げていき、後から修正をいれていきたいと思っています。 宜しくお願いします。 (mako) ---- 保管書シートを印刷するために 納品予定表シートを作成していますか? それとも、納品予定表シートはこれ単独で 必要なのでしょうか? また、一つのセルに「納入先ABC」と表示させますか? >数字をカンマ区切りなどで表示させたい場合は たとえば、納品枚数が 1,000だったとします。 A12セルに 納数1000 で良いですか? 納数1,000 が良いですか? 私としては A12セルに 納数 B12セルに 1,000 とするのが簡単に思いますし、 見たときも見やすいのではないかと思います。 が、 セルの都合や、印刷レイアウトの関係上、別々の列には出来ない (別々にしない方が見やすい) なんて事は大いに有りそうに思います。 どうでしょう? (HANA) ---- 返答ありがとうごさいます。 >保管書シートを印刷するために 納品予定表シートを作成していますか? それとも、納品予定表シートはこれ単独で 必要なのでしょうか? →はい。納品予定表には毎日更新されたデータを貼り付けているので 報告書を作成するために必要になります。 >また、一つのセルに「納入先ABC」と表示させますか? 今回は納品先でひとつ、ABCでひとつのセルにし、分けたいです。 >納数1,000 が良いですか? カンマつけたいです! >A12セルに 納数 B12セルに 1,000 横並びに分けることにしたので上記のように作成していきたいです! 宜しくお願い致します! (mako) ---- ですから、「セル番地を教えて下さい」と書いています。 まぁ、それぞれセルを分けるなら 数式を一つだけ書きますので 各セルには、対応する式に変更して入れて下さい。 まず、保管書シートのA1セルに「1」を入力 納入先を表示したいB7セルには =INDEX(納品予定表!A:A,A1) の式を入れて下さい。 納入先は、納品予定表のA列に有るので、 INDEX関数の参照先もA列に成っています。 最終行数が有る程度決まっているなら 納品予定表!A1:A100 の様に範囲を絞って設定して下さい。 型番を表示させたい列には B列を参照した式を入れて下さい。 各セルの表示形式を整えて下さい。 数式が全て入ったら、A1セルの値を一つずつ増やしていき 各セルの値が正しく変わることを確認して下さい。 ここまで出来れば、後はマクロの出番に成ります。 A1セルの文字を白にして、印刷時に表示されない様にして下さい。 また、A1セルが都合が悪ければ、どのセルなら良いのか セル番地を教えて下さい。 (HANA) ---- HANAさんが説明してくれたとことまでできました! 表は下記のようなセル番号になっています。 間とんでるところもありますが、 必要なセルは下記のようになっています。 納品予定表シート A B C E F G H ------------------------------------------------------------------ 1 納品先名 型番 カラーサイズ 商品名 発注分類 保管数 納品枚数 ------------------------------------------------------------------ 2 ABC 123456 1900 ABAB 新規 63 790 3 DEF 789456 2313 CDCD 新規 63 790 4 GHI 7894561 5623 EFEF 追加 64 800 まだ下につづく。 ----------------------------------------------------------------- 保管書シート↓ セルNO A B D セルNO S -------------------------------- ---------------- 7 納入先 __ 11 発注分類____ 8 型番 ___ ------------------ 9 品 名 ___ 10 カラーサイズ ___ 11 保管数 ___納品数 __ ------------- ------------------- この後の作業についてお願い致します! (mako) ---- A1セルの使用は問題無かったですかね。 1.Alt + F11 でVBEを起動 2.挿入(I)→標準モジュール(M) で標準モジュールを挿入し 3.以下のコードの Sub 保管書印刷() 〜 End Sub を貼り付け。 4.エクセルに戻って Alt + F8 から 「保管書印刷」を実行します。 '------ Sub 保管書印刷() Dim lr As Long, pr As Long lr = Sheets("納品予定表").Range("A" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If With Sheets("保管書") For pr = 2 To lr .Range("A1").Value = pr .PrintPreview ' .PrintOut Next End With End Sub '------ 印刷プレビューが上手く表示されれば、この行を削除して、 その下の .PrintOut の前に有る ' を消し、印刷されるようにして下さい。 (HANA) ---- HANAさん 印刷プレビューはしっかり表示されました! が、標準のボタンをおしてもプレビューから元に戻ってくれません。。。 印刷する際はA1セルの番号を1にして印刷、2にして印刷・・・ということを 繰り替えしていけばいいのですよね? このマクロは初めてなんですが、 納品予定表にある型数がいっぺんに印刷できるというものではないですよね? すみません。このマクロの意味を理解できていないです・・。 (mako) ---- 何度も申し訳ないです! >印刷プレビューが上手く表示されれば、この行を削除して、 その下の .PrintOut の前に有る ' を消し、印刷されるようにして下さい。 この行というのはどこのことでしょうか・・・? ごめんなさい。 また、プレビューからは標準に戻りました。 (mako) ---- 印刷プレビューが次々に表示されませんでしたか? 最後のデータまで表示されたら マクロは終了します。 この行がわからなければ、 Preview の7文字を Out の3文字と 書き換えて下さい。 (HANA) ---- HANAさん毎回ありがとうございます。 プレビューは次々に表示されました。 閉じるを押していけばいんですよね。 また、マクロを修正したいのですが 先ほど入力したマクロのコードが表示されないです。。。 ALT+F11では何も記載されていないものになってしまいます。。 最後まで申し訳ありません。。 マクロの修正の仕方を教えてください。 (mako) ---- エクセルに戻って Alt + F8 の中に 「保管書印刷」がありますか? 有るのでしたらそれを選択し [実行(R)]ではなく [編集(E)]を押してください。 コードが出てきます。 ちなみに、Alt + F8 は メニュー・ツール(T)→マクロ(M) マクロ(M) からたどれます。 (HANA) ---- HANAさんありがとうございます! できました! 下記のように最後に .PrintOut .PrintOutと二行ならんでいいのですよね? ありがとうございました!! Sub 保管書印刷() Dim lr As Long, pr As Long lr = Sheets("納品予定表").Range("A" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If With Sheets("保管書") For pr = 2 To lr .Range("A1").Value = pr .PrintOut ' .PrintOut Next End With End Sub (mako) ---- 下側は、緑色の文字になっていますよね。 でしたら、大丈夫です。 でも、緑色の行は 削除して仕舞って良いですよ。 あるいは、変わりにこちらを Preview にかえるとか。 (HANA) ---- はい。下側は緑色になっています。 これは上側をPrintOutとして実行を押すとすぐに印刷が始まって便利なんですが、 最初の2〜3枚をプレビューでみて印刷を押すと 全ての印刷が始まるという設定にはできないのでしょうか? 下側の緑色をPrintPreviewにするとプレビューと印刷が選べたりするのかと思い、 試してみたのですが、マクロのコードをPrintOutにしないとダメでした。 今、印刷を試しに5型分印刷をしてみたら2型番と3型番しか印刷されませんでした。 納品予定表は一行目にタイトルが記載しており、 二行目から1型番目が記入されています。 保管書シートはA1に1といれると納品予定表の二行目の1型番目が表示されます。 だけど、印刷プレビューも、印刷も2型番と3型番しか印刷されません。 どうしてでしょうか・・。 最後の最後まで大変申し訳ありませんが、教えてください。 (mako) ---- これでやってみてもらえますか? 嫌でも3枚は見てもらう必要が有りますが・・・。 2枚にしたければ Application.Min(lr, 3) ‾ここを「2」にして下さい。 '------ Sub 保管書印刷1() Dim lr As Long, pr As Long lr = Sheets("納品予定表").Range("A" & Rows.Count).End(xlUp).Row - 1 If lr < 1 Then MsgBox "印刷データが有りません。" Exit Sub End If With Sheets("保管書") For pr = 1 To Application.Min(lr, 3) '←3枚プレビュー .Range("A1").Value = pr .PrintPreview Next If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 1 To lr .Range("A1").Value = pr .PrintOut Next End If End With End Sub '------ >印刷プレビューも、印刷も2型番と3型番しか印刷されません。 >どうしてでしょうか・・。 に関しては >A1に1といれると納品予定表の二行目の1型番目が表示されます。 だからなんですけどね。。。 コードの方を変更したので、取り敢えず確認をお願いします。 (HANA) ---- HANAさんありがとうございます! これで作業が効率よくできそうです! (mako) ---- たびたび申し訳ありません。 下記型番がカラーサイズの記載がない場合、 同じ型番は一枚の保管書を印刷したいのですが、 データは同じ型番が続いてでてきてしまいます。 同型番につき一枚を印刷する方法はありますでしょうか? 宜しくお願いします。 納予定表シート ------------------------------------------------------------------ 納品先 型番 カラーサイズ 商品名 発注分類 保管数 納品枚数 ------------------------------------------------------------------ ABC 123456 ABAB 新規 63 790 ABC 123456 CDCD 新規 63 790 GHI 789456 5623 EFEF 追加 64 800 JKL 963852 1257 CDCD 新規 72 900 まだ下につづく。 ----------------------------------------------------------------- 上記の場合、納品先ABCの型番が同じなので印刷時は一枚だけ出力したいです。 再度アドバイスを頂けますと幸いです。 (mako) ---- そのサンプルだと 全部で何枚印刷されれば良いのですか? また、それぞれどの様に印刷されれば良いのですか? それから、他にも要望が有る場合は 今の内に出しておいて下さい。 (HANA) ---- 何度も追加で申し訳ありません。 下記の場合だと記載しているもので、 型番1233456は保管書を一枚、789456は一枚、963852は一枚になります。 毎日更新してデータを納品予定表に貼り付けているのですが、 同じ型番のものがいくつかあります。 型番ひとつにつき保管書は一枚で大丈夫なので一型番につき一枚保管書を出したいです。 ------------------------------------------------------------------ 納品先 型番 カラーサイズ 商品名 発注分類 保管数 納品枚数 ------------------------------------------------------------------ ABC 123456 ABAB 新規 63 790 ABC 123456 CDCD 新規 63 790 GHI 789456 5623 EFEF 追加 64 800 JKL 963852 1257 CDCD 新規 72 900 まだ下につづく。 ----------------------------------------------------------------- 他の要望としては、上記に記載しましたが同型番で一枚の保管書ですが、 後々、同型番でもカラーサイズが異なる場合にはカラーサイズごとに保管書を 出していきたいです。 納品予定表には上記の項目がありますが、 カラーサイズが違うものが入力されていても現時点では型番が同じ場合なら一枚の出力で十分です。 今後、作業を進めるにつれて、カラーサイズごとに保管書を印刷する場合は カラーサイズごとに保管書を作成していきたいです。 いろいろと後からごめんなさい。 宜しくお願いします。 (mako) ---- >型番1233456は保管書を一枚 にしたら、内容は 2行目を表示?3行目を表示? また、印刷実行の前に 型番・カラーサイズの順で ソートされていると考えて良いですか? (HANA) ---- >型番1233456は保管書を一枚 にしたら、内容は 2行目を表示?3行目を表示? →どちらでも問題ないですが、一番上の型番に統一したいので二行目にしたいです。 >また、印刷実行の前に 型番・カラーサイズの順で ソートされていると考えて良いですか? →はい。大丈夫です。 申し訳ありません。 宜しくお願いします。 (mako) ---- 分かりました、明日までにはコードを載せますので しばらくお待ち下さい。 (HANA) ---- 申し訳ありません。 宜しくお願いします。 (mako) ---- 二つ載せておきます。 「保管書印刷2」が 型番が同じ場合に一枚 「保管書印刷3」が、型番とカラーサイズが同じで一枚 のコードになります。 これを機に、マクロも勉強なさってください。 '------ Sub 保管書印刷2() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long With Sheets("納品予定表") lr = .Range("A" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If pr = 1 Do pr = pr + 1 If .Range("B" & pr - 1).Value <> .Range("B" & pr).Value Then pi = pi + 1 Sheets("保管書").Range("A1").Value = pr - 1 Sheets("保管書").PrintPreview End If Loop Until pi = 3 Or pi = lr If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 2 To lr If .Range("B" & pr - 1).Value <> .Range("B" & pr).Value Then Sheets("保管書").Range("A1").Value = pr - 1 Sheets("保管書").PrintOut End If Next End If End With End Sub '------ Sub 保管書印刷3() '型番&カラーサイズが同じものは一枚 Dim lr As Long, pr As Long, pi As Long With Sheets("納品予定表") lr = .Range("A" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If pr = 1 Do pr = pr + 1 If .Range("B" & pr - 1).Value <> .Range("B" & pr).Value Or _ .Range("C" & pr - 1).Value <> .Range("C" & pr).Value Then pi = pi + 1 Sheets("保管書").Range("A1").Value = pr - 1 Sheets("保管書").PrintPreview End If Loop Until pi = 3 Or pi = lr If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 2 To lr If .Range("B" & pr - 1).Value <> .Range("B" & pr).Value Or _ .Range("C" & pr - 1).Value <> .Range("C" & pr).Value Then Sheets("保管書").Range("A1").Value = pr - 1 Sheets("保管書").PrintOut End If Next End If End With End Sub '------ (HANA) ---- HANAさんありがとうございます。 できました! マクロはコードをどうやってもってきたらいいのかがわかりません。 いつも前にあったデータのマクロを修正している程度だったので。 少しずつなれていきたいと思います。 ありがとうございました! (mako) ---- 何度もすみません。 作業をしていく上で修正したい箇所とプラスしたい箇所がでてきてしまいました。 2点あるのですが 1点目は同じ型番の保管書は一枚で良いのですが、 同じ型番でも毎朝抽出するデータの納品枚数が違ってきます。 なので今の状態で型番につき一枚、保管書を出力すると 一番上の型番のみの納品数で計算された保管数がでてきます。 続いてでている同型番の納品数は計算されていないので 下記で説明をしてみると、 納品先名 ABCはセル番号A2の保管書はでるけど、 セルA3のデータは省かれてしまっています。 セルA2の納品枚数は790枚、A3は650枚なので 合計1440枚。保管数は115枚として一枚の保管書を出力したいです。 これからマクロを修正することは可能でしょうか・・。 ◆納品予定表シート A B C E F G H ------------------------------------------------------------------ 1 納品先名 型番 カラーサイズ 商品名 発注分類 保管数 納品枚数 ------------------------------------------------------------------ 2 ABC 123456 1900 ABAB 新規 63 790 3 ABC 123456 2313 ABAB 新規 52 650 4 GHI 894561 5623 EFEF 追加 64 800 まだ下につづく。 ----------------------------------------------------------------- 2点目は 納品予定表シートに一項目追加されました。 登録番号です。 この下5桁(全12桁)の番号を保管書のFの7に反映させたいです。 下5桁だけ反映させる方法を教えてください。 ◆納品予定表シート(A〜Eは省いています) F G H H ------------------------------------------------- 1 発注分類 保管数 納品枚数 登録番号 --------------------------------------------------- 2 新規 63 790 123456777723 3 新規 52 650 012345685858 4 追加 64 800 567888889563 まだ下につづく。 ----------------------------------------------- ◆保管書シート↓ セルNO A B ... F セルNO S -------------------------------- ---------------- 7 納入先 __ 登録番号__ 11 発注分類____ 8 型番 ___ ------------------ 9 品 名 ___ 10 カラーサイズ ___ 11 保管数 ___納品数 __ ------------- ------------------- いつもすみません。 お力添えお願い致します。 (mako) ---- 1点目のご要望に関しては、その様な問題が出そうに思ったので >>型番1233456は保管書を一枚 >にしたら、内容は 2行目を表示?3行目を表示? と言う質問をしたのですけどね。 コードはあくまでも、A1セルに番号を入れて印刷しているだけです。 条件を付けて、番号を入れるか・入れないか の判断はしていますが。 そこで質問ですが、前回最終的なコードとして二つ作りました。 保管書印刷2 と 保管書印刷3 です。 これらはどちらかを使うことに決まったら ずっと使っていくのでしょうか? それとも、場合によってどちらを使うかが決まるのでしょうか? >合計1440枚。保管数は115枚として一枚の保管書を出力したいです。 この様な事をするのなら、どこかに「何件有るか(代表・合算か否か)」の表示が 有った方が良さそうに思いますが、 「そんなこと言われなくてもちゃんと考えてます!!」ですかね。 それから、保管書シートのB7セルに入れている数式を教えて下さい。 (HANA) ---- 一度聞いていただいていたのに違う理解のしかたをしてしまっていました。 申し訳ありません。。。 >保管書印刷2 と 保管書印刷3 です。 これらはどちらかを使うことに決まったら ずっと使っていくのでしょうか? それとも、場合によってどちらを使うかが決まるのでしょうか? →現在は保管書印刷2を使用しています。 今後の作業の変更でもしかしたら保管書印刷3の方を使用することになるかもしれません。 なのでどっちをずっと使い続けるかは現段階では判断できないのです。。、すみません。。 > この様な事をするのなら、どこかに「何件有るか(代表・合算か否か)」の表示が 有った方が良さそうに思いますが、 →ごめんなさい。ちょっと難しくて理解ができなかったのですが 同じ型番同士なら合算するか?しないか?という表示がでて、 するにすれば同じ型番の納品枚数が合算されて、 設定している割合の数字がでるということでしょうか? そうでしたら表示の設定をしたいです! >管書シートのB7セルに入れている数式を教えて下さい。 →=INDEX(納品予定表!A2:A636,A1)になります 何度もすみません。 宜しくお願い致します。 (mako) ---- ちょっと全体的に、話がかみ合っていない様です。。。 1.マクロはどちらを使うの? >なのでどっちをずっと使い続けるかは現段階では判断できないのです。 現段階でどちらを使うのかをお伺いしたかったのではなく 今日は 保管書印刷2 を使ったけど、明日は保管書印刷3を使う あさってはまた、保管書印刷2 を使う の様に、日によって使い分ける様な事が有るか? をお伺いしたかったのですが・・・可能性として その様な事もあるのですかね? 2.「何件有るか(代表・合算か否か)」の表示 >そうでしたら表示の設定をしたいです! えっと、そう言った事は考えていません。。。 今後、スキルを磨いて実装させて下さい。 この表示と言うのは、例えば 最後に載せて居られるサンプルの 上側の表を元表とするなら 型番が重複していますので、保管書シートには 型番 123456 カラーサイズ 1900 保管数 115 と表示されますね? でも、この印刷物から 納品予定表を探しても そう言った項目は有りません。 保管数 63 であれば、2行目に有りますが。 この印刷物のどこかに 数量以外は代表データですよ。 とか 数量は他のデータも合算した値ですよ。 とか この情報は、2件のデータを合わせたものですよ。 なんて事が書いて有れば、納品予定表を見て数が違っても 「あれ?これ、数が違うんじゃないの?」 なんて思わなくても良いですよね。 何もなくて数が違うと、その様なルールを知らない人は 「こうやって書いてあるけど、本当は63なんでしょ?」 と、思い 意図した処理がされない可能性が 出てくるのではないかと思います。 数式を教えて下さったので、先に2点目のご質問に関してですが F7には =RIGHT(INDEX(納品予定表!I2:I636,A1),5) としてみて下さい。 ‾‾‾‾‾‾‾I列ですよね?(H列ではなく) (HANA) ---- HANAさんありがとうございます! まず、下5桁の入力についてですができました! ありがとうございます。 >1.マクロはどちらを使うの? →受け取り方がちがく申し訳ありません・・。 現在は印刷物2を使用してますが、 いずれか2か3のどっちかに統一します。 日によって2か、3かは使い分けてはいません。 >数量は他のデータも合算した値ですよ。 →同型番の場合、この印刷をしたいです! 理解ができてなくて大変申し訳ないのですが、 これは同型番のそれぞれの納品予定数を合算することは 可能ということなんですよね・・? >この情報は、2件のデータを合わせたものですよ。 なんて事が書いて有れば、納品予定表を見て数が違っても 「あれ?これ、数が違うんじゃないの?」 なんて思わなくても良いですよね。 →はい!データを作成しているのは私だけなので、 保管書をみて誰でもわかるようになると助かります! いつもすみません。 アドバイス宜しくお願い致します!! (mako) ---- >これは同型番のそれぞれの納品予定数を合算することは >可能ということなんですよね・・? はい、可能です。 >いずれか2か3のどっちかに統一します。 と言う事ですので、数式を変更します。 ただし「2」と「3」では数式が変わってきますので 今後「3」に切り換えたときは、これらのセルの 数式の変更が必要になります。 まず、現在の「2」に関してですが これは、型番が一致すると言う条件で 合算すれば良いと思いますので、 SUMIF関数を使用して下さい。 例えば、現在 保管数が表示されているB11セルには =INDEX(納品予定表!G2:G636,A1) の式が入っていると思いますが、これを =SUMIF(納品予定表!B2:B636,B8,納品予定表!G2:G636) に変更します。F11は この部分が J列に ‾‾‾‾‾‾‾‾変わります。 型番が一致している行の合計が表示されます。 >データを作成しているのは私だけなので、 >保管書をみて誰でもわかるようになると助かります! でしたら、どの様に表示されれば良いですかね? 例えば、「数量合算」と書くのなら =IF(COUNTIF(納品予定表!B2:B636,B8)=1,"","数量合算") をどこかのセルに入れて下さい。 「数量合算 2件分」なら =IF(COUNTIF(納品予定表!B2:B636,B8)=1,"","数量合算 "&COUNTIF(納品予定表!B2:B636,B8)&"件分") の様な式になります。 「3」のコードを使用する場合は 型番とカラーサイズ と、条件が二つになってくるので SUMPRODUCT関数を使用します。 保管数のセルには =SUMPRODUCT((納品予定表!B2:B636=B8)*(納品予定表!C2:C636=B10),納品予定表!G2:G636) として下さい。 注釈を出すのは =IF(SUMPRODUCT((納品予定表!B2:B636=B8)*(納品予定表!C2:C636=B10))=1,"","数量合算") こんな感じになります。 今回、マクロの変更は有りません。 なお 作成した数式は、確認していませんので エラーが出る場合や結果が違う場合は 正しく変更するか、 どの様になるのかご説明頂ければと思います。 (HANA) ---- HANAさんありがとうございます! 作成できました! 1点質問があります。 今、同型番ものは合算されるようになりましたが、 納品予定表でだされている保管数を合算したものが保管書シートにでているのですが、 納品予定数をたして、対応表で確認すると保管数の数量が異なってきます。 例えば、下記数量で説明をしてみると、、、 ----------------------------------- 型番 保管数 納品数 12312312 16 123 12312312 13 100 ----------------------------------- 保管書シートには保管数/納品数 29/223 と記載されるのですが223は対応表で確認すると×11%なので 25枚となります。 この誤差は修正することは可能でしょうか・・? 何度も本当に申し訳ございません・・・。 (mako) ---- えっと・・・それは可能だとは思いますが それで良いのですか? ・・・まぁ、些末なことなのかもしれませんが。 「それは可能だとは思いますが」 ってのは、 保管数は、 納品予定表でそれぞれ計算してから参照・合算するのではなく 保管書シートの方で計算すればよいのでは? って事ですが。 納品予定表シートの納品枚数を参照している =IF(OR(D2<25,D2>=35000),"",ROUND(D2*VLOOKUP(D2,$F$2:$G$10,2,TRUE),0)) ‾‾ ‾‾ ‾‾ ‾‾ この辺りのセルが、保管所シートの納品数を参照すれば良いのでしょ? 合算された納品数に対して、の保管数を得たいのなら。 B11セルに、参照先を変更した式を入れておけば良いと思いますが。 この辺は、マクロの話しではなく、数式やその組立の話しですので 身構えずに「どこが利用出来るか・どうなってたら良いのか」 考えてみて下さい。 マクロでデータを転記するのではなく、 数式でデータを参照させる方法を提案したのは この辺りを柔軟に考えてもらえるためですので。 (HANA) ---- HANAさんありがとうございます! 無事完成しました! 柔軟な考えもって頑張ります! (mako) ---- 上記までの表作成について変更がでてきたので相談をしたいです。 @納品予定表の項目が変更になった。 A保管書をA4に二枚表示になった(紙を削減するため) B保管書の必要項目が変更になった(項目が減った) まず@なのですが、日々倉庫よりデータをもらってくるのを 納品予定表に貼り付けます。 納品予定表を元に保管書が作成され、印刷をしていきます。 下記が項目が変更になった納品予定表です。 納品予定表シート A B C D E F G ・・ J ・・ ------------------------------------------------------------------ 1 日付(=TODAY() ------------------------------------------------------------------ 2 納品先名 伝票NO 商品NO カラーサイズ 登録no 商品名 納品枚数 保管数 ------------------------------------------------------------------ 3 ABC 123 11-11 1212 111111111 アイウエオ 500 50 ----------------------------------------------------------------- Bですが下記のように項目を減らしました。 B(X) F(AB) K(AG) O(AK) ------------------------------------------------------------------ 6 納品先__ 登録no(下5桁)__ 7商品no___ 商品名___ 8カラーサイズ___ 保管数___ 納品数___ ------------------------------------------------------------------ B(X)の6に納品先、B(X)7に商品NO、B(X)8にカラーサイズ F(AB)に登録NOの下5桁 K(AG)7に商品名、 K(AG)8に保管数、O(AK)に納品数 がくるようにしています。 ()のアルファベットはAの保管書をA4に二枚印刷していきたい ので二枚目のセルの位置番号になっています。 現在A4で一枚で印刷しており保管書にはそれぞれ納品予定表からもってくる 情報の式を入力しているのですが 先にこれを変更すると保管書がエラー表示になってしまいました。 (=INDEX(納品予定表!E3:E529,A1)など) 最初に下記のマクロコードを変更する必要があるのでしょうか? どこを変更したらいいのか教えて頂けますでしょうか? --------------------------------- Sub 保管書1印刷2() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long With Sheets("納品予定表") lr = .Range("E" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If pr = 1 Do pr = pr + 1 If .Range("F" & pr - 1).Value <> .Range("F" & pr).Value Then pi = pi + 1 Sheets("保管書1").Range("F1").Value = pr - 1 Sheets("保管書1").PrintPreview End If Loop Until pi = 3 Or pi = lr If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 2 To lr If .Range("F" & pr - 1).Value <> .Range("F" & pr).Value Then Sheets("保管書1").Range("A1").Value = pr - 1 Sheets("保管書1").PrintOut End If Next End If End With End Sub --------------------------------- しばらく経ってからの変更相談で申し訳ありません。 アドバイス宜しくお願いします (mako) ---- 数式とコードと両方の変更が必要ですが まずは、数式を変更してもらうのが良いと思います。 >先にこれを変更すると保管書がエラー表示になってしまいました。 これは、項目数の増減に伴う変更の時点で上手く行かないのでしょうか? それとも、二枚目の表示が上手く行かないのでしょうか? まずは、1枚目の表示が上手く行くように数式を作成して下さい。 1枚目の印刷時は、A1セルに入力した行数のデータを 表示することにしていると思います。 2枚目に関して、A1セルに該当するセル番地を教えて下さい。 2枚目の数式は、そのセルに入力された値の 行数のデータが表示されるように、数式を作成して下さい。 (HANA) ---- HANAさんいつもありがとうございます。 一枚目には式を入力できました! 二枚目のA1に該当するセルはW1です。 宜しくお願いします (mako) ---- >一枚目には式を入力できました! 2枚目のは・・・・? W1セルに入力した行数のデータが 参照されるような式にして下さいね。 コードは、こんなので動きますか? '------ Sub 保管書1印刷3() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long Dim pg, i As Long, pli As Long With Sheets("納品予定表") lr = .Range("E" & Rows.Count).End(xlUp).Row If lr = 2 Then MsgBox "印刷データが有りません。" Exit Sub End If ReDim pg(1 To lr) For pr = 3 To lr If .Range("F" & pr - 1).Value <> .Range("F" & pr).Value Then pli = pli + 1 pg(pli) = pr End If Next pr = 2 Do Sheets("保管書1").Range("A1").Value = pg(pr - 1) Sheets("保管書1").Range("W1").Value = pg(pr) Sheets("保管書1").PrintPreview pi = pi + 1 pr = pr + 2 Loop Until pi = 3 Or pr > pli If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 1 To Application.RoundUp(pli / 2) * 2 Step 2 Sheets("保管書1").Range("A1").Value = pg(pr) Sheets("保管書1").Range("W1").Value = pg(pr + 1) Sheets("保管書1").PrintOut Next End If End With End Sub '------ (HANA) ---- HANAさんありがとうございます。 保管書二枚目については作成しました! 一枚目の=INDEX(納品予定表!A2:A529,A1)のA1部分をW1に変更すればいいということですよね? マクロを記載していただいたものを貼り付けてみました。 が、印刷しますか?でOKにすると 実行時エラー1004 引数の数の誤りがあります とエラー表示がでてしまいます・・。 For pr = 1 To Application.RoundUp(pli / 2) * 2 Step 2の部分が黄色くでます。 原因をお教え頂ければと助かります。。 いつもすみません・・! (mako) ---- >一枚目の=INDEX(納品予定表!A2:A529,A1)のA1部分を >W1に変更すればいいということですよね? はい、そうです。 >引数の数の誤りがあります >とエラー表示がでてしまいます・・。 あっっ・・・スミマセン。 ROUNDUP(数値,桁数)なのに 桁数を指定していませんでした・・・。 でも、RoundupよりEvenを使った方が良さそうですね。 少し書き直しました。 今度は一応動かしてみたので もう一度、↓でやってみてもらえますか? '------ Sub 保管書1印刷4() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long Dim pg, i As Long, pli As Long With Sheets("納品予定表") lr = .Range("E" & Rows.Count).End(xlUp).Row If lr = 2 Then MsgBox "印刷データが有りません。" Exit Sub End If ReDim pg(1 To lr) For pr = 3 To lr If .Range("F" & pr - 1).Value <> .Range("F" & pr).Value Then pli = pli + 1 pg(pli) = pr End If Next pli = Application.Even(pli) pr = 2 Do Sheets("保管書1").Range("A1").Value = pg(pr - 1) Sheets("保管書1").Range("W1").Value = pg(pr) Sheets("保管書1").PrintPreview pi = pi + 1 pr = pr + 2 Loop Until pi = 3 Or pr > pli If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 1 To pli Step 2 Sheets("保管書1").Range("A1").Value = pg(pr) Sheets("保管書1").Range("W1").Value = pg(pr + 1) Sheets("保管書1").PrintOut Next End If End With End Sub '------ (HANA) ---- HANAさんありがとうございます! A4 2枚に印刷できました。 ただ、納品予定表のセル2〜5まで入力してあるものの、 4と5しか保管書に印刷されず、残り一枚は0で出てきてしまいました・・。 もしかしたら先日記載した納品予定表が1に日付、 2に項目3から情報入力となっていたのを1の日付を削除したため、 項目が1になり2より情報が入っています 。 なのでマクロコードも変更になると思い、 For pr = 3 To lrとLoop Until pi = 3 Or pr > pliの3を2に変更してみたら 残り一枚が印刷できませんでした・・・。 あと、どの部分を変更すればいいか教えて頂けますでしょうか? 何度も本当に申し訳ありません。 '------ Sub 保管書1印刷4() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long Dim pg, i As Long, pli As Long With Sheets("納品予定表") lr = .Range("E" & Rows.Count).End(xlUp).Row If lr = 2 Then MsgBox "印刷データが有りません。" Exit Sub End If ReDim pg(1 To lr) For pr = 3 To lr←3を2に変更 If .Range("F" & pr - 1).Value <> .Range("F" & pr).Value Then pli = pli + 1 pg(pli) = pr End If Next pli = Application.Even(pli) pr = 2 Do Sheets("保管書1").Range("A1").Value = pg(pr - 1) Sheets("保管書1").Range("W1").Value = pg(pr) Sheets("保管書1").PrintPreview pi = pi + 1 pr = pr + 2 Loop Until pi = 3 Or pr > pli←3を2に変更 If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 1 To pli Step 2 Sheets("保管書1").Range("A1").Value = pg(pr) Sheets("保管書1").Range("W1").Value = pg(pr + 1) Sheets("保管書1").PrintOut Next End If End With End Sub '------ (mako) ---- >2に項目3から情報入力となっていたのを1の日付を削除したため、 1に日付を入れて、2に項目、3から情報入力 と言うご説明の状態にしていただければ 正しく出力できるのですか? まずはそれをご確認下さい。 こちらでもテストしますので、上手く行かない テストデータを載せていただければと思います。 (HANA) ---- 説明不足で申し訳ありません。 下記のように納品予定表が作成しています。 普段は50以上の商品が届きますが試しで4商品で記載しています。 この状態で先ほどのコードをのせたところ、 セル番号4と5は保管書が印刷されたのですが、2と3が印刷されません。 紙はでてくるのですが全て0ででてきてしまいます。 また、 >>For pr = 3 To lrとLoop Until pi = 3 Or pr > pliの3を2に変更してみたら 残り一枚が印刷でき ませんでした・・・。 と記載いたしましたが、このように変更すると 3、4、5は印刷されるのですが2が印刷されません・・・。 現在コードは3を2に変更する前の状態です。 納品予定表シート A B C D E F G ・・ J ・・ ------------------------------------------------------------------ 1 納品先名 伝票NO 商品NO カラーサイズ 登録no 商品名 納品枚数 保管数 ------------------------------------------------------------------ 2 ABC 123 11-11 1212 111111111 アイウエオ 500 50 3 DEF 456 12-19 1233 222222222 カキクケコ 500 50 4 GHI 789 13-15 1222 333333333 サシスセソ 500 50 5 JKL 698 14-15 8555 555555555 タチツテト 500 50 ----------------------------------------------------------------- どこに原因があるのか教えていただければと思います。 何度も申し訳ないです。 (mako) ---- これで試して下さい。 '------ Sub 保管書1印刷5() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long Dim pg, i As Long, pli As Long With Sheets("納品予定表") lr = .Range("E" & Rows.Count).End(xlUp).Row If lr = 1 Then '★1行目見出しなので、「1」に変更 MsgBox "印刷データが有りません。" Exit Sub End If ReDim pg(1 To lr) For pr = 2 To lr '★2行目からデータなので、「2」に変更 If .Range("F" & pr - 1).Value <> .Range("F" & pr).Value Then pli = pli + 1 pg(pli) = pr End If Next pli = Application.Even(pli) pr = 2 Do Sheets("保管書1").Range("A1").Value = pg(pr - 1) Sheets("保管書1").Range("W1").Value = pg(pr) Sheets("保管書1").PrintPreview pi = pi + 1 pr = pr + 2 Loop Until pi = 3 Or pr > pli If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 1 To pli Step 2 Sheets("保管書1").Range("A1").Value = pg(pr) Sheets("保管書1").Range("W1").Value = pg(pr + 1) Sheets("保管書1").PrintOut Next End If End With End Sub '------ ただ、makoさんが変更されたコードで 1.If lr = 2 Then の変更が無いのは、エラー処理ですので不具合にはつながりませんし 2.For pr = 3 To lr←3を2に変更 ここは、変更してもらえば良いと思いますし 3.Loop Until pi = 3 Or pr > pli←3を2に変更 ここは、印刷プレビューの関係なので、印刷には関係有りません 4.For pr = 1 To pli Step 2 ここは変更されていないのですよね? でしたら、【印刷されない】と言う事は無いと思うのですが。。。? 「←3を2に変更」と書いているけど、変更せずに試した なんて事は有りませんか? 或いは「印刷プレビュー」の段階と「印刷」を混同して居られる? >まずはそれをご確認下さい。 は、確認して頂けたのですかね? この段階で上手く行っていないのなら そのコードを修正しても上手く行くとは思えませんが。 (HANA) ---- すみません・・ >>>まずはそれをご確認下さい。 は、確認して頂けたのですかね? 確認をしていませんでした。。。 >1に日付を入れて、2に項目、3から情報入力 これでSub 保管書1印刷4()を実行させても 4つの情報のうち下の2つしか印刷されませんでした・・。(実際に印刷しています) また、Sub 保管書1印刷5()で実行させるとセル2以外の3つは印刷されました・・。 A1とW1、両方に1と入力して実行させてますが、これはあまり関係ないでしょうか・・? どうして一番最初の列が印刷されないのでしょうか・・。 長々と申し訳ないです。。 (mako) ---- 一応お伺いしてみますが >Sub 保管書1印刷5()で実行させるとセル2以外の3つは印刷されました・・。 この時、A1,W1セルの値は それぞれ何になっていますか? また、以下のコードも実行してみて下さい。 '------ Sub データ確認1() Dim lr As Long, pr As Long Dim pg, pli As Long With Sheets("納品予定表") lr = .Range("E" & Rows.Count).End(xlUp).Row ReDim pg(1 To lr + 1, 1 To 2) pg(1, 1) = "最終行" pg(1, 2) = lr For pr = 2 To lr pg(pr, 1) = pr If .Range("F" & pr - 1).Value <> .Range("F" & pr).Value Then pg(pr, 2) = "印刷する" pli = pli + 1 Else pg(pr, 2) = "印刷しない" End If Next pg(lr + 1, 1) = pli pg(lr + 1, 2) = Application.Even(pli) .Range("J1").Resize(lr + 1, 2) = pg End With End Sub '------ 納品予定表シートのJ:K列に結果を書き出しますので コピーして、こちらへ貼り付けて下さい。 (HANA) ---- 済みません、分かりました。 '------ Sub 保管書1印刷6() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long Dim pg, i As Long, pli As Long With Sheets("納品予定表") lr = .Range("E" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If ReDim pg(1 To lr) For pr = 2 To lr If .Range("F" & pr - 1).Value <> .Range("F" & pr).Value Then pli = pli + 1 pg(pli) = pr - 1 '★ここで「-1」 End If Next pli = Application.Even(pli) pr = 2 Do Sheets("保管書1").Range("A1").Value = pg(pr - 1) Sheets("保管書1").Range("W1").Value = pg(pr) Sheets("保管書1").PrintPreview pi = pi + 1 pr = pr + 2 Loop Until pi = 3 Or pr > pli If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 1 To pli Step 2 Sheets("保管書1").Range("A1").Value = pg(pr) Sheets("保管書1").Range("W1").Value = pg(pr + 1) Sheets("保管書1").PrintOut Next End If End With End Sub '------ これで印刷出来るように成ると思います。 (HANA) ---- HANAさんありがとうございます! できました〜! 完成しました! これで紙が節約できます。。 長い時間ありがとうございました! (mako) ---- B(X) F(AB) K(AG) O(AK) ------------------------------------------------------------------ 6 納品先__ 登録no(下5桁)__ 7 商品N0___ 保管数__ 納品数_ ------------------------------------------------------------------ 上記のように項目を削り、保管書のシートのそれぞれの関数も修正しました。 Alt+F8でマクロを実行させると納品予定表の最初の二行しか印刷されません。 下記マクロコードのどこに問題があるか教えていただけますでしょうか? ------ Sub 入荷検品報告書1印刷6() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long Dim pg, i As Long, pli As Long With Sheets("納品予定表") lr = .Range("E" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If ReDim pg(1 To lr) For pr = 2 To lr If .Range("F" & pr - 1).Value <> .Range("F" & pr).Value Then pli = pli + 1 pg(pli) = pr - 1 End If Next pli = Application.Even(pli) pr = 2 Do Sheets("保管書1").Range("A1").Value = pg(pr - 1) Sheets("保管書1").Range("W1").Value = pg(pr) Sheets("保管書1").PrintPreview pi = pi + 1 pr = pr + 2 Loop Until pi = 3 Or pr > pli If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 1 To pli Step 2 Sheets("保管書1").Range("A1").Value = pg(pr) Sheets("保管書1").Range("W1").Value = pg(pr + 1) Sheets("保管書1").PrintOut Next End If End With End Sub 宜しくお願いします(mako) ---- すっかり忘れているのですが。。。 動いていたときのコードを基準にすると コードはどこか変更しましたか? (HANA) ---- 現在、報告書の項目を下記のように変更しました。 マクロは起動して印刷もされるのですが、 納品予定表に記載されているデータが全て反映されていないのか、 所々、印刷されない商品no(保管書)があります。 下記上記マクロコードでやっています。 どこに不備があるのか分からなく、再度相談させていただきました。 B(X) F(AB) K(AG) O(AK) ------------------------------------------------------------------ 4 発注NO 6 納品先__ 登録no(下5桁)__ 7商品no___ 保管数_____納品数___ ------------------------------------------------------------------ マクロコード↓ '------ Sub 入荷検品報告書1印刷6() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long Dim pg, i As Long, pli As Long With Sheets("納品予定表") lr = .Range("c" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If ReDim pg(1 To lr) For pr = 2 To lr If .Range("d" & pr - 1).Value <> .Range("d" & pr).Value Then pli = pli + 1 pg(pli) = pr - 1 End If Next pli = Application.Even(pli) pr = 2 Do Sheets("保管書1 ").Range("A1").Value = pg(pr - 1) Sheets("保管書1").Range("W1").Value = pg(pr) Sheets("保管書1").PrintPreview pi = pi + 1 pr = pr + 2 Loop Until pi = 3 Or pr > pli If MsgBox("印刷しますか?", vbYesNo) = vbYes Then For pr = 1 To pli Step 2 Sheets("保管書1").Range("A1").Value = pg(pr) Sheets("保管書1").Range("W1").Value = pg(pr + 1) Sheets("保管書1").PrintOut Next End If End With End Sub アドバイス宜しくお願いします。 (mako) ---- 納品予定表シートには どこにどんなデータが用意されているのか 保管書1シートには どこにどんな数式を入れてあるか >所々、印刷されない商品no(保管書)があります。 が再現できるように ブックの状態を教えて下さい。 (HANA) ---- 情報が不足しておりすみません! 下記のようになっています。 納品予定表(SEET1) A B C D E F G H I J K ——————————————————————————————————————— 1 納入先 発注No 商品No 登録No 納品数 ・・・・・・保管数・・・・・ ——————————————————————————————————————— 2 ABC 123 123-123 1111225 120 12 3 ・ ・ 7 8 9 ・ ・ 13 ・ ——————————————————————————————————————— 保管書↓ B(X) F(AB) K(AG) O(AK) ------------------------------------------------------------------ 4 発注NO 6 納品先__ 登録no(下5桁)__ 7商品no___ 保管数_____納品数___ ------------------------------------------------------------------ B4(発注NO)→=INDEX(納品予定表!B2:B503,A1) X4 =INDEX(納品予定表!B2:B503,W1) B6(納品先)→=INDEX(納品予定表!A2:A503,A1) X6 =INDEX(納品予定表!A2:A503,W1) F6(登録NO)→=RIGHT(INDEX(納品予定表!D2:D509,A1),5) AB6 =RIGHT(INDEX(納品予定表!D2:D509,A1),5) B7(商品NO)→=INDEX(納品予定表!C2:C502,A1) X7 =INDEX(納品予定表!C2:C502,W1) K7(保管数)→=IF(OR(O7<25,O7>=35001),"",ROUND(O7*VLOOKUP(O7,対応表!$A$3:$B$11,2,TRUE),0)) AG7→=IF(OR(AK7<25,AK7>=35001),"",ROUND(AK7*VLOOKUP(AK7,対応表!$A$3:$B$11,2,TRUE),0)) O7 (納品数)→=SUMIF(納品予定表!C2:C502,B7,納品予定表!E2:E503) AK7→=SUMIF(納品予定表!C2:C502,X7,納品予定表!E2:E503) 今日、ためしに列15までデータを入力し、印刷してみました。 印刷して確認してみると列7.8.9.13が印刷されていませんでした。 他は印刷されており、データも納品予定表に入っているものと間違ってはいませんでした。 なのでどこ に問題があるかわからず相談させていただきました。 どこに不備があるのかご指摘お願い致します。 (mako) ---- えっと。。。 >ためしに列15までデータを入力し、印刷してみました。 >印刷して確認してみると列7.8.9.13が印刷されていませんでした。 この様に成るデータを載せて下さい。 載せて下さった表では 納品予定表(SEET1)の2行目しかデータが入っていませんが・・・。 それから 納品予定表シートの C2:C16に「AAA」 D2:D16に 1から順番に15迄番号を入れたデータ を作成し、印刷されない行が在るか確認して下さい。 (HANA) ---- 申し訳ありません。。 下記作成しなおし、1〜15まで入力し、印刷をしてみました。 印刷されなかったのは1〜15までの数字でいいますと、6.8.12です。 なので納品予定表の列番号でいいますと7.9.13になります。 納品予定表(SEET1) A B C D E ・・・・・・ I J K ——————————————————————————————————————— 1 納入先 発注No 商品No 登録No 納品数 ・・・・・・ 保管数・・・・・ ——————————————————————————————————————— 2 ABC 123 123-123 1111225 120 12 3 DEF 456 122-123 1112222 300 18 4 GHI 789 159-145 1115556 72 9 5 DEF 986 114-456 0011153 252 20 6 DEF 456 222-223 8866665 30 5 7 ASD 156 232-252 9877555 120 12←印刷されない 8 ASD 362 888-889 2222556 200 16 9 ASW 122 159-632 6546546 30 5←印刷されない 10 ABC 231 114-488 9879798 32 5 11 DEF 125 222-233 7894562 132 13 12 HIJ 456 987-698 1234569 30 5←印刷されない 13 AVD 985 152-555 7896546 360 22 14 KOI 951 222-365 1239879 400 24 15 JIO 159 777-15 1236566 1194 36 ——————————————————————————————————————— 保管書は納品予定表の一行まるごと印刷されません。 列5が印刷されて次に印刷されるのは7行目、というような感じです。 でも連番でちゃんと印刷されるところもあります。 納品予定表の一行が抜かされて、保管書が印刷されてしまいます。。。 どうも原因がわかりません。。。 どうか宜しくお願いします。 (mako) ---- こちらでは問題無い様に思うのですが。 以降、行番号でお話をさせて頂きます。 印刷した物は、行番号と納入先だけ書くと 一枚目 2 ABC 3 DEF 二枚目 4 GHI 5 DEF 三枚目 6 DEF 8 ASD (7行目が抜ける) 四枚目 10 ABC 11 DEF (9行目が抜ける) 五枚目 13 AVD 14 KOI (12行目が抜ける) 六枚目 15 JIO の、6枚が印刷されると言う事ですか? こちらは載せて下さったデータと 載せて下さったコードで試して居ますので 念のためにそちらでも 新しいブックに同じデータを作成し コードを貼り付けて 実行してみた結果を教えて下さい。 (HANA) ---- ありがとうございます。 試してみました。 行番号、納入先で記載します。 一枚目 2 ABC 3 DEF 二枚目 4 GHI 5 DEF 三枚目 6 DEF 8 ASD 四枚目 10 ABC 11 DEF 五枚目 12 HIJ 14 KOI 六枚目 15 JIO ? 六枚目の?の部分ですが、発注NOは列6のもので納品数と保管数が列7のものになっています・・・。 どこかで何かくるってしまったのでしょうか・・・。 HANAさんとは五枚目の13と12の違いと上記にも記載しました六枚目の不明なものになります。 何がおかしいのかわからず本当に困っています。。 長時間にわたり申し訳ありません。。 (mako) ---- どうも、コード以外の問題の様に思えるのですが 。。。中途半端な所がよく分かりませんが。。。 コードに「pli = Application.Even(pli)」と言う行が在りますが その上に Stop を入れて下さい。 Next Stop '←これを追加 pli = Application.Even(pli) コードを実行すると、ここで一度止まります。 表示(V)→ローカルウィンドウ(S)を表示させて [+]pg の [+]を開いて何が表示されているか こちらに書きだして下さい。 ご提示のデータなら 「値」の所が 1,2,3,4,・・・・,13,14,Empty と縦に並んでいると思いますが。。。? (HANA) ---- 何度もすみません。 下記が表示されました。 式 値 型 + Module Module1/Module1 lr 15 Long pr 16 Long pi 0 Long + pg Variant/Variant(1 to 15) i 0 Long pli 11 Long 上記の表示の意味が分からないのですが、何か解決にむかうでしょうか。 今いろいろ確認はしてみているのですが。。 (mako) ---- > + pg Variant/Variant(1 to 15) この先頭の + をクリックして下さい。 pg(1) pg(2) pg(3) とかってのが出てくるので、右側の 値の列にどの様に表示されているか教えて下さい。 と言う事だったのですが。。。 pliが「11」に成ってますね。 でしたら、現在止まっているコードは [■]でリセットして下さい。 ↓のコードを実行してみてもらえますか? Sub 確認() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long Dim pg, i As Long, pli As Long With Sheets("納品予定表") lr = .Range("c" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If ReDim pg(1 To lr) For pr = 2 To lr If .Range("d" & pr - 1).Value = .Range("d" & pr).Value Then MsgBox "D" & pr - 1 & " セルの値 " & .Range("d" & pr - 1).Value & " と" & vbLf _ & "D" & pr & " セルの値 " & .Range("d" & pr).Value & " は" & vbLf _ & "データが同じなので印刷しません。" End If Next End With End Sub (HANA) ---- すみません! 下記になります! こから乗せていただいたコードでためしてみます! 式 値 型 - Module1 Module1/Module1 <変数なし> lr 15 Long pr 16 Long pi 0 Long - pg Variant/Variant(1 to 15) pg(1) 1 Variant/Long pg(2) 2 Variant/Long pg(3) 3 Variant/Long pg(4) 4 Variant/Long pg(5) 5 Variant/Long pg(6) 7 Variant/Long pg(7) 9 Variant/Long pg(8) 10 Variant/Long pg(9) 11 Variant/Long pg(10) 13 Variant/Long pg(11) 14 Variant/Long pg(12) Empty 値 Variant/Empty pg(13) Empty 値 Variant/Empty pg(14) Empty 値 Variant/Empty pg(15) Empty 値 Variant/Empty i 0 Long pli 11 Long 以上です!ご確認お願いします。(mako) ---- たびたびすみません(><) やはり型番が同じ物の印刷したいのですが、 > MsgBox "D" & pr - 1 & " セルの値 " & .Range("d" & pr - 1).Value & " と" & vbLf _ & "D" & pr & " セルの値 " & .Range("d" & pr).Value & " は" & vbLf _ & "データが同じなので印刷しません。" の部分を削除すれば問題ないでしょうか?? (mako) ---- それより先に、「確認」の結果がどうだったのかご報告下さい。 >>ためしに列15までデータを入力し、印刷してみました。 >>印刷して確認してみると列7.8.9.13が印刷されていませんでした。 >この様に成るデータを載せて下さい。 の後に載せてくださった表は、D列に重複はありません。 なのに実行結果は 6-7,8-9,12-13行のデータがそれぞれ 重複している事を示しています。 (HANA) ---- すみません! のせていただいたコードで実行したところ、 印刷も何もされませんでした。 マクロを実行させ、実行ボタンをおしたら、そのままマクロの画面が消えただけです。 ただ、納品予定表のデータをかえて実行させたとこころ、 下記の表でいう、【D2とD3の値が一緒のため印刷しません】というメッセージがでました。 また、このときも印刷はされていません。 でもD列の値ではなく、商品NOが一緒の場合は印刷は一枚にしたいです。 納品予定表(SEET1) A B C D E ・・・・・・ I J K ——————————————————————————————————————— 1 納入先 発注No 商品No 登録No 納品数 ・・・・・・ 保管数・・・・・ ——————————————————————————————————————— 2 ABC 123 123-123 1111222 120 12 3 DEF 456 122-123 1111222 300 18 4 GHI 789 159-145 1115556 72 9 5 DEF 986 114-456 0011153 252 20 (mako) ---- う〜ん、話が良く分かりません。 >すみません! >下記になります! この時のデータで↓をやってみてもらえますか? Sub 確認2() '型番が同じものは一枚 Dim lr As Long, pr As Long, pi As Long Dim pg, i As Long, pli As Long With Sheets("納品予定表") lr = .Range("c" & Rows.Count).End(xlUp).Row If lr = 1 Then MsgBox "印刷データが有りません。" Exit Sub End If ReDim pg(1 To lr) For pr = 2 To lr If .Range("d" & pr - 1).Value <> .Range("d" & pr).Value Then pli = pli + 1 pg(pli) = pr - 1 Else MsgBox "D" & pr - 1 & " セルの値 " & .Range("d" & pr - 1).Value & " と" & vbLf _ & "D" & pr & " セルの値 " & .Range("d" & pr).Value & " は" & vbLf _ & "データが同じなので印刷しません。" End If Next MsgBox "印刷枚数は " & pli & " 枚です。" Stop End With End Sub 表示されるメッセージと Stopで止まった時の各変数がどうなっているか 確認して教えて下さい。 ちなみに、印刷する部分はコードから削除してますので 印刷はされません。 (HANA) ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/200904/20090413175030.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97059 documents and 608315 words.

訪問者:カウンタValid HTML 4.01 Transitional