- 締切済み
【関数とVBA】教えてください。
EXCELの関数またはVBAについて教えてください。 【2月 受注明細一覧表】 番号 受注日 受注先 商品名 見積金額 請求金額 1 2/1 (株)○○○○ △△△△ ¥10,000- ¥12,000- 2 2/3 (株)□□□□ ▲▲▲▲ ¥25,000- 3 4 ・ ・ ・ 私は、デザイン会社で経理をしています。 上記の様な受注明細一覧表を作成したのです。 月次で担当デザイナーから経理に報告してもらうのですが、 月をまたがる業務の場合、3月の一覧表にも記入しなければなりません。受注は2月でも作業終了が3月で、請求金額が 決定するのも3月という場合です。 1月/2月/3月/・・・とシートを分けています。 2月の一覧表から、請求金額が未記入の受注分のみを3月に反映させることが自動でできますでしょうか。 関数かVBAを使用するってことはわかるのですが、どうしていいのかわかりません。 回答お願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- qualheart
- ベストアンサー率41% (1451/3486)
ツール→マクロ→Visual Basic Editorを選択し、起動した画面の左側エリアにあるツリーから、開いているBookの「ThisWorkbook」をダブルクリックし、表示されたウィンドウに以下ソースをコピーして保存してください。 実行はツール→マクロ→マクロで「ThisWorkbook.NewSheet」を選択して実行すればOKです。 実行は、前月のシートを表示した状態で行ってください。 VBを実行すると、シート名を入力するダイアログが表示されるので、作成するシート名を入力しOKすると、自動的にシートを作成し、必要なデータのみをコピーします。 ////以下VBAソース//// Sub NewSheet() i = ActiveSheet.Index sheetname = InputBox("シート名を入力してください。") Worksheets.Add After:=Worksheets(i) If sheetname = True Then Worksheets(i + 1).Name = sheetname End If For h = 1 To 6 Sheets(i + 1).Cells(1, h).Value = Sheets(i).Cells(1, h) Next b = 1 n = 2 Do While Sheets(i).Cells(n, 5) <> "" If Sheets(i).Cells(n, 6) = "" Then Sheets(i + 1).Cells(b + 1, 1).Value = b Sheets(i + 1).Cells(b + 1, 2).Value = Sheets(i).Cells(n, 2) Sheets(i + 1).Cells(b + 1, 3).Value = Sheets(i).Cells(n, 3) Sheets(i + 1).Cells(b + 1, 4).Value = Sheets(i).Cells(n, 4) Sheets(i + 1).Cells(b + 1, 5).Value = Sheets(i).Cells(n, 5) Sheets(i + 1).Cells(b + 1, 6).Value = Sheets(i).Cells(n, 6) b = b + 1 End If n = n + 1 Loop Sheets(i + 1).Columns("B:B").Select Selection.NumberFormatLocal = "m/d" Sheets(i + 1).Columns("E:F").Select Selection.NumberFormatLocal = "\#,##0;\-#,##0" Cells(1, 1).Select End Sub
- mshr1962
- ベストアンサー率39% (7417/18945)
「フィルタオプションの設定」を利用してみてください。 あたらしいシートに 請求金額 =">0" と入力。 3月のシートを選択して「データ」「フィルタ」「フィルタオプションの設定」 ■抽出先を「指定した範囲」にする。 ■リスト範囲を「2月のシート!A2:F1000」 ■抽出条件欄を「あたらしいシート!A1:A2」(請求金額とその下のセル) ■抽出範囲を「3月のシートの番号のセル」 でOKすれば抽出できます。
補足
回答ありがとうございます。 試してみたのですが、うまく作動しません。 「抽出した範囲にはフィールド名がないか、または無効なフィールドです」といわれました。 お手数おかけしますが、おわかりになりましたら教えてください。 よろしくお願い致します。
お礼
ありがとうございます。 VBAソースまでのせていただき、とても参考になりました。 本当にありがとうございます。