• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELにてマクロ失敗。簡単なシステム作りです。)

Excelで簡単な商品管理をする方法

このQ&Aのポイント
  • Excelで簡単な商品管理をする際に、マクロの作成で失敗してしまった場合、オートフィルやDATE関数を使用して解決する方法を教えてください。
  • シート(1)にはレジのようなフォーマットを作成し、シート(2)には商品情報が入っています。
  • 精算ボタンを押した時、シート(2)にオートフィルをかけ、シート(1)の商品NOをコピーし、オプションに貼り付け絞り、DATE関数を挿入する方法がうまくいきません。上書きも可能な方法を教えてください。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

#1 です。  大変失礼いたしました。「EXCEL2003」と大きく書いていらっしゃいましたね。 (^凹^)  妄想ついでに、適当な コード を書いてみましたので、ご参考までに。 「シート(1)の商品NO」が Sheet1!A2 に入っていて、「シート(2)に商品情報(商品NO」は Sheet2!B:B に入っているものとします。 Sub Macro1()  Dim 商品NO  商品NO = Sheets("Sheet1").Range("A2").Value  Sheets("Sheet2").Select  Range("A" & Rows.Count).End(xlUp).Offset(1).Select  Columns("B:B").Find(商品NO).EntireRow.Copy Selection  Cells(Selection.Row, 1) = Date End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

>オプションに貼り付けできませんでした  オートフィルタ の ドロップダウン の中から「(オプション...)」を クリック し、[抽出条件の指定:] を設定して、[OK] を クリック するという操作を、[新しいマクロの記録(R)...] で記録してみると、 Selection.AutoFilter Field:=1, Criteria1:="=商品NO", Operator:=xlAnd というような コード を得ることができます。  Excel の バージョン ぐらいはお書きになった方がよろしいかと。。。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

質問には各シートのデータ実例ぐらい書いて質問するべきだ。 自分の頭のイメージなど、読者にはわからない。 補足してほしい。VBAコードまで作ってくれといわんばかりの質問ならなおさらだ。 >レジのようなフォーマット これも読者が具体的にはよくわかりますか。 >最後部に 何処の最後部? >直近の注文日 これもよくわからない。直近とは?プログラム実行日で良いのか? >オートフィルをかけ なぜオートフィル?突然過ぎる。オートフィルタの誤り? >プリグラミングは初級レベルです。 というが、質問文の記述の仕方には無理・飛躍があって、仕様書などかけないのでは。 (1)シート(1) >「レジのようなフォーマッ」トを、列・行・セルの位置を示して例として記述すること。 (2)コマンドボタンをシートに貼り付け (3)ボタンのクリックイベントにシート(2)への処理を記述。これは経験あるのかな。 (4)シート(2)のフォーマット 列・行・セルの位置を示して例として記述。 シート(1)から、商品NOは持ってくるとして、それからどうするの? 何かシート(2)において、商品NOで検索するのかな? >コピーし、 コピーというがエクセルなどのコピーは書式も含めて写す仕組み。 普通はシート(1)のあるセルの値をシート(2)のあるセルに代入(=XX)で良いのでは。

shunsuke07
質問者

お礼

ご回答ありがとうございました。 確かに説明不足でした。 代入は知りませんでした。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロについての質問です

    前回、このサイトにて教えてもらったマクロにて、不明な点が出てきましたので再度質問させていただきます。 ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞                           ボタン  A  B  C  D  E  F  G    H                  data1                      data2                    data3                      data4                    data5                    data6                      ・                        ・                        ・     ※Gの列にはハイパーリンクが並んでいます。 ※ボタン押下時に選択しているセルの行番号を取得し、その行のA~F列をコピーして、ハイパーリンクで開いた ファイル(date・・・)にはりつける。 ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ この作業のマクロを教えていただき、以下のマクロが出来ました。 Sub book() Dim col As Integer '選択行No取得用変数 Windows("book.xls").Activate col = ActiveCell.Row '現在選択している行No格納 Range(Cells(col, 1), Cells(col, 6)).Select '該当行のA~F列選択 Selection.Copy '選択範囲コピー Cells(col, 7).Hyperlinks(1).Follow NewWindow:=True '該当行のリンク開く Sheets("Sheet2").Select '貼り付けシートの選択 Range("a2").Select '貼り付けセルの選択 ActiveSheet.Paste '貼り付け End Sub このマクロで、もともと作成していた6行程度の表では何の不自由も無く作業できました。 次にこの表の行が大量に増えてきましたので \\server\スタッフ\購買 フォルダーに、連続した番号のファイル (date1・date2・・・・date10)を作成し、上記の表の3行目(data1の行)のG列に、ハイパーリンク関数  =HYPERLINK("\\server\スタッフ\購買\"&H3&".xls",H3)を入力。 その後、3行目H列にdate1を入力し、フィルコピーにてdate1・date2・・・・date10までを作成。 次に3行目G列からフィルコピーにてハイパーリンクdate1・date2・・・・date10までを作成。 これで、単純に上記表を拡大することが出来たと思っていたのですが、今まで使っていたマクロボタンを押すと “実行時エラー9:インデックスが有効範囲にありません”となってしまい、デバックすると Cells(col, 7).Hyperlinks(1).Follow NewWindow:=True の行が黄色に点灯していました。 これはどういう内容でしょうか?どの作業が悪いのでしょうか?私としては、この表のからリンクするファイルを 増やし、そのファイル名をフィルコピーにて表に陳列させたいと考えていました。 もし何か良い作業があれば教えていただきたいです。すみませんがよろしくお願いします。

  • マクロを使用してフィルについて

    データをコピーや挿入などをしたあとで 関数処理でフラグなどを入れる行がある場合、 フィルを使用すると関数が入ってるところまでしか 動きません(挿入前のデータのみ) 例 No データ フラグ 1 てすと 1 ←フラグの値はIF文で値を出すようにしてます。 2 らすと 2の行を挿入した場合、フィルをかけると関数がはいってないので フィルが機能しません。 マクロにはSelection.AutoFill Destinationというので フィルの先を明示的に指定すればできるのですが、 データがどんどん増えることを考えた場合、 変数か何かを使うのでしょうか??

  • エクセルVBAでEdate関数は使えますか?

    エクセル2002使用です。 VBAでワークシート関数のEdate関数は、使用可能でしょうか?また、もし使用可能であった場合、それは「分析ツール」のアドインを入れてなくても大丈夫でしょうか? sub 一月後() Dim no as date no = WorksheetFunction.edate(Cells(1,1), 1) End sub が実行時エラー438となってしまいます。 (変数noは、Cells(1,1)の一月後) 原因がよくわからず困ってます。 よろしくお願いします。

  • 〔VBA・マクロ〕EXCELからACCESSデータをひっぱるには?

    当方のレベルはアクセス初級者(基本的な操作)、 エクセルはごく簡単なVBAをいじる中級者です。 アクセスにて顧客マスター、商品マスターを作成しています。 エクセルで納品書を作成しています。 現状では外部データの取り込みをつかって エクセルシートに顧客データ(シート1)と商品データ(シート2)を 取り込んだ後に、納品書(シート3)でシート1、2に VLOOKUP関数をかけて、納入先と商品情報を 伝票におとしこんでいます。 こんなまどろっこしいことをせずに、 エクセルからアクセスのテーブルへ直接データを取り込む方法は ないものでしょうか? どなたかよろしくお願いいたします。

  • エクセルでオートフィルを使いコピー 

    エクセルで表を作成しているのですが たとえば シート名2012のA1のセルに シート名2011のA1をコピーし シート名2012のA2のセルに シート名2011のB1をコピーしていくというように コピー先とコピー元が縦横になる場合、オートフィル機能が使えないようですが この場合どのような関数を作ればオートフィルで作業できますか? 沢山有るのでいちいち値をコピーして行列を入れかえて貼り付けの方法だと時間がかかってしまいます。 宜しくお願いします。

  • エクセル一括反映

    お世話になります。 エクセルで、たとえばNO1シートに品名等を記入して、 別なシートに反映させる時に、 関数挿入をクリックし、SUMでNO1シートの 反映したい部分をクリックして反映させましたが、 0になってしまいます。 0にならないようにするには、 どうしたらよいでしょうか? すみません、宜しくお願い致します。

  • エクセル2007 オートフィルのような

    請求書をエクセル2007で作りたいのです。  わからないことは、VLOOKUP関数で1つ作る。たとえばB3のセルに作った場合、B4から仮にB20までオートフィルでいっせいに作る方法はないのでしょうか?  別シート(シート2)に作成した商品一覧表から自分で商品コードをつけそれをもとにVlOOKUP関数で商品を摘出しています。それはできるのです。  やはり、B3のセルもB2のように1つ1つVLLOKUP関数をしていかなければいけないのでしょうか?

  • フィルタで選択した行を別シートにコピーするマクロ

    よろしくお願いします シート1 の一行目にタイトルがあって 二行目以降にデータ(30列目まで)が 入っております そのデータをオートフィルタで抽出して 抽出されたデータ(タイトル行は不要)を 選択してシート2のデータ最終行の 一行下へ貼り付けたいのですが。 シート1で Range(Cells(2, 1), Cells(Cells(65536, 1).End(xlUp).Row, 30)).Select こうやって選択した後の記述がわかりません。 このままシート2の最終行を 選択貼り付けしようとするとシート1の選択内容が 消えてしまう(シート2が最新の選択になるため?) 挿入の際に「下へ」「右へ」など聞かれるのも 面倒なので行選択したいのですが 御教授ねがいます

  • エクセル 値に変換できない F2+F9 まとめて

    得意先からもらったエクセルデータの中に、商品コードがあります。 そのコードを基に、Vlookup関数で自社のデータフィルから必要な値を引っ張ってきたいのですが、もらったデータのコードが、関数に認識されません。 選択・右クリック・値に変換・貼り付け をしても、別のシートに貼り付けても、認識されません。 書式を標準・数値・文字列 どれに変えても、認識されません。 コードのセルを1つずつF2+F9とすると、認識されることがわかりました。しかし、データが5000件あり、ひとつひとつは不可能です。 良い方法を教えて下さい。お願いします。

  • ExcelマクロでVLOOKを実行したい

    ExcelマクロでVLOOKを実行したい 同一シートにある「全体」の表から必要な項目をVLookで抜き出したくて 下記のマクロを作成しました。 「Sheet1」のA列(A2以下)には検索値(数字6ケタ)を入れています。 A2の検索値でヒットした値はB2・C2に入りましたが、A3以下の検索値は スルーされてしまいます。どこを直したら良いのか、ご教授ください。 よろしくお願いします。 ----------------------------------------------------------------------- Sub 検索して値を取得する() Dim 範囲 As Range Dim 検索値, i As Long Dim 出荷日 As Date Dim 商品名 As String Set 範囲 = Worksheets("全体").Range("E7:HG1000") Set 検索値 = Worksheets("Sheet1").Cells(i + 2, 1) If 検索値.Value <> "" Then 商品名 = Application.WorksheetFunction.VLookup(検索値, 範囲, 2, False) 出荷日 = Application.WorksheetFunction.VLookup(検索値, 範囲, 160, False) Cells(i + 2, 2).Value = 商品名 Cells(i + 2, 3).Value = 出荷日 i = i + 1 End If End Sub

専門家に質問してみよう