• ベストアンサー

EXCEL 関数

EXCELで倉庫への出荷指示書を作っています。 雛形に入力し「別シートへ」というボタンを押せば、転記・保存できるようになっています。 A8に「オーダーNO」、A5に「店名」、C5に「日付」を表示しています。 別シートに保存するタイミングで、「オーダーノート」という名のシートに指示書の一部内容を転記したいのですが、方法はあるでしょうか? オーダーノートのA列に「日付」、c列に「店名」を表示したいのです。なお、B列には予め「オーダーNO」が連番で入っています。

  • iiwa
  • お礼率17% (29/162)

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

#1のmerlionXXです。 では、 Sub TEST() Set BC = Sheets("ブランク注文書") With Sheets("オーダーノート") x = .Cells(Rows.Count, "A").End(xlUp).Offset(1).Row .Cells(x, "A") = BC.Range("C5") .Cells(x, "B") = BC.Range("A8") .Cells(x, "C") = BC.Range("A5") End With BC.Copy Before:=Sheets(3) Range("A1:G717").Copy Range("A1:G717").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False BC.Select Range("B7,A11:A86,D11:F86,H10:H86").ClearContents Set BC = Nothing End Sub 別パターンも同じ場所でOKです。

iiwa
質問者

お礼

ありがとうございました。 出来ました! また何かあればお願い致します。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

出来るだけ、#1のお礼の、質問者のコードのような、コピー貼り付けはやめるべきです。コードがややこしくなるだけ。値の代入でよい。 オーダーノートにおける、書式その他は必要あれば別途考えるべきです。 スクロールなど不要と思う。マクロの「記録をとったからかな? 自分のコードに拘るな。 >ボタンを押せば 雛形シートの「コマンドボタン」のClickイベントに ー >オーダーノート」という名のシート(sh2とする) の、現状での最下行を求め その次の行に、>雛形に入力した(sh1とする)、データを代入すればよい。 Set Sh1=Worksheets("雛形") Set Sh2=Worksheets("オーダーノート") k=Sh2.Cells(65536,"A").End(xlUp).Row+1 Sh2.Cells(k,"A")=Sh1.cells(5,"C") '日付 Sh2.Cells(k,"C")=Sh1.cells(5,"A") '店名 Sh2.Cells(k,"B")=Sh1.cells(8,"A") 'NOーー>不要?<=B列には予め「オーダーNO」が連番で入っています。 普通は同期を取るため相互に何とかするのでは? -- 上記のコードは質問者のコードのどこに入れるべきという問題ではない。 上記だけでほぼ完成形ですから。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

> 別シートに保存するタイミングで それなら現在の転記・保存のマクロを掲示すれば簡単だったのですが・・・ へたに書くと現在のマクロとの関係でおかしくなるのでシート名をきっちりおさえたいのですが、雛形に入力しているシートの名前がわからないのでとりあえず「雛形」という名前にしました。 > B列には予め「オーダーNO」が連番で入っています。 その番号を検索してその行に転記させるんですか? なら、 With Sheets("オーダーノート") x = Application.Match(Sheets("雛形").Range("A8"), .Range("B:B")) .Cells(x, "A") = Sheets("雛形").Range("C5") .Cells(x, "C") = Sheets("雛形").Range("A5") End With でいけると思いますが無いとエラーになります。 でも連番ならオーダーNOも転記したら? With Sheets("オーダーノート") x = .Cells(Rows.Count, "A").End(xlUp).Offset(1).Row .Cells(x, "A") = Sheets("雛形").Range("C5") .Cells(x, "B") = Sheets("雛形").Range("A8") .Cells(x, "C") = Sheets("雛形").Range("A5") End With でいけると思います。

iiwa
質問者

補足

ありがとうございます。 転記・保存のマクロは下記なのですが、教えてくださったマクロはどこに入れればよいでしょうか? 教えてくださった2パターンで試して、使い勝手のいい方で運用したいと思います。 2度手間になりますがご指導お願い致します。 Sheets("ブランク注文書").Copy Before:=Sheets(3) Range("A1:G717").Select ActiveWindow.SmallScroll Down:=-18 Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("ブランク注文書").Select Range("B7,A11:A86").Select Range("A11").Activate ActiveWindow.SmallScroll Down:=-69 Range("B7,A11:A86,D11:F86,H10:H86").Select Range("H86").Activate Application.CutCopyMode = False Selection.ClearContents End Sub

関連するQ&A

  • エクセルの関数を教えてください。

    エクセルの関数を教えてください。 sheet1は売上明細を入力、sheet2は入金確認票です。 sheet1のO列に伝票NO(同じNOを何度入力するが、その場合の日付は同じ) sheet1のA列に日付です。 sheet2のD列に伝票NOを入力した時に、F列にsheet1の日付を持ってくる方法を教えてください。 よろしくお願い致します。

  • エクセル関数で

    初歩的な質問で 申し訳ないですが。 シート 3枚に データーを入力して その計を 別シートに表示したいのですが、その時表示したいシートは日付で管理したいのです。  IF(TODAY()=A3,シート1!$O$2+シート2!$O$2+シート3!$O$2,IF(A3<100000,"")) の数式を立てたのですが、 この数式だと日付が変わるとそのセルは 表示が出なくなります。日付が変わっても そのシートの計算された数字はそのまま残るようにするにはどうしたら良いでしょうか? 無理なのかな? 教えて下さい。 A3以降A列には毎日の日付を入力してあります。    

  • エクセルの関数について

    エクセルのシート1で1行目には見出しがあります。 A1には「店名」の文字 A2には、A店 A3にはC店 A4にはB店 A5にはA店とA2~A200には、ランダムにA店~C店の文字がランダムに入っています。 B2には、「個数」の見出し文字。B2には 3 B3には 201  B4には 42 などとB2~B200まで色々な数字が入っています。 ちなみに B列には 0~300までのランダムな数字。 これをシート2に、B列の数の区分けをしたいのです B列の区分け 0~30 31~50  50~300  よって、シート2のA1には「店名」という文字。B2には 0~30  C2には 31~50  D2には50~300という文字が入っています・ シート2のA2には、A店 シート2のA3には B店 シート2の A4には C店 という文字が入っています。 シート2のB2にはシート1のA店のB列にある B2~B200に入ってる文字の 0~200までに入ってる数字 0~30の セルの個数を出したいのですが どうやってシート2に関数を入れたらいいのですか?教えてください

  • エクセル関数

    エクセル関数を教えてください。 下記のシフト表のようなものを作成しているのですが、 【Sheet1】    A列    B列  C列   D列 ・・・・  1 氏名    4/8   4/9   4/10・・・・ 2 勤務者名  ●   △    ■ B列以降は連続した日付で 2行目は出勤日に記号を入力します。 記号は仕事種類によって違うので、種類はいろいろあります。 ちなみに、【Sheet1】のひな形は変更不可です。 この表を元に【Sheet2】に勤務者名を入力すると、 最初に出勤した日と、最後に出勤した日を表示させたいのです。 IFやVLOOK関数を使うのかな?と思いいろいろやってみたのですが、 うまくできませんでした。。。 ご協力よろしくお願いします。  

  • エクセルの関数についてです、よろしくお願いします

    エクセルの関数についてです、よろしくお願いします。 sheet1に以下の様なデータが何百行とあります。 A B C D E 日付  顧客名  品名  数量  金額 上記のsheet1のデータを基にsheet2へ抽出して転記する ものを作りたいと考えています。 具体的に言いますと sheet2のA1に2014/11/21、 B1に2014/12/20、 C1に ○○商店と入力するとその下に A      B     C     D 日付   品名   数量 金額 2014/11/23  りんご 5 750 2014/11/28  みかん 2 300 2014/12/2   いちご 3 600 2014/12/10  りんご 5 750 sheet1のリストから該当するものを引っ張ってきて sheet2へ表示させるものです オートフィルタ等でなく、関数で出来ないでしょうか お詳しい先生方よろしくお願いします。

  • エクセルの関数について

    A列に日付、B列にコードが入っているデータシートから、日付-コードが同じものの個数を算出して統計を取りたいときは、どのような関数を使えばよいのでしょうか。 例) A     B   1/5    A01   1/5    A01      (別シート) 1/5 A01 2   1/8    B01             1/8 B01 1   1/9    A01             1/9 A01 1

  • エクセル

    シート1~5まであります。別に情報シートを作成しています それぞれ同じ原本から作成しています 全部のシートにA1~A10のセルに日付、B1~B10のセルに文字など入力がするところがあります 入力はA1から順番に入れていきます 例えば 保存ボタンを作成しておく シート1のA1に日付、B1に”文字”を入力し、保存ボタンをおす 情報シートに日付と内容が一致する情報がなければ、 情報シートのA列にシート名、B列に日付、C列に入力した内容が 空白のところに出力される こんな感じに作成できないでしょうか?

  • ExcelのVLOOKUP関数?IF関数?

    下記のようなExcelがシート1にあります。  A     B     C 11/1 11/2 11/3 11/4 11/5 11/6 A列には月日が1日から31日まで入っています。 別のシート2には下記のようなExcelがあります。  A     B     C 11/1   1000    2000 11/1   2000    3000 11/3   5000    10000 11/3   7000    4000 11/5   500     3000 11/6   5000    1000 A列には月日が飛び飛びの状態です。 シート1には結果として下記のように表示したいのです。  A     B     C 11/1   3000    5000 11/2    0      0 11/3   12000   14000 11/4    0      0 11/5   500    3000 11/6   5000    1000 シート1の月日とシート2の月日の同一のものを探し、その値の合計をB列C列に表示する。 シート1の月日とシート2の月日が同一でないものは"0"と表示する。 この場合、どういった関数を使えばよいでしょうか。 また、関数式も具体的にどういったものにすればよいでしょうか。

  • EXCEL データベースより別シートに抽出

    Sheet1に商品の受注状況をリストにしています。 A列-オーダーNo、B列-顧客No、C列-顧客名、G列-商品Aの注文数、H列-商品Bの注文数、、、、J列-商品Dの注文数、というように。これをデータベースとして、次のような事をするにはどのようにすればよいでしょうか? 商品の入荷はバラバラです。入荷した時点で、その商品の出荷指示書を顧客毎に作り倉庫に渡します。 そこで、、、 Sheet2に出荷指示書を作ります。 A1にオーダーNoを入力するとB1に顧客名が表示されます(これは出来ます)。 たとえば今回は商品Bが入荷したとして、A7に商品Aのコードを入れると、この顧客の商品Aに対する注文数がB8に表示されるようにしたいのですが、それが出来ません。。欲を言えば、もしその顧客が商品Aを注文していなければ、B8に「0」または「×」が表示されると尚良いのですが。 よろしくお願い致します。

  • エクセルの並び替え または関数

    エクセルの並び替え または関数ですが、シート1に A列に店名が入っています。 B列に氏名 C列に成績 D列は資格 1行目は、見出し A列に店名がはいっているのですが、店名は100行まで店名がランダムに入っています 店名は、小渕店  春日部店  長野店  三島店  加賀店  丸田店 がランダムで100行まで入っています。これを並び変えで小渕店  春日部店  長野店  三島店  加賀店  丸田店の順に並び変える方法はありますか? 教えてください

専門家に質問してみよう