Excel 2007: 前の行が入力されている場合は自動的に行を挿入する

Excel 2007: 前の行が入力されている場合は自動的に行を挿入する

顧客向けの印刷領収書として使用できるワークシートを作成したいのですが、基本的なレイアウトは次のとおりです。

  • 顧客の連絡先の詳細(名前、住所など)これらは固定フィールドであり、空白になる場合があります。
  • ヘッダー行: 「商品|数量|価格|合計」
  • 顧客が購入する商品ごとに 1 行ずつ、任意の数の行を含む動的テーブル
  • 記事の総数と合計金額を含むフッター行

私が苦労しているのは、動的テーブルを機能させる方法です。現在、新しい記事ごとに手動で行を挿入していますが、非常に混雑している状況では面倒です。Excel でデフォルトで 1 行の空白行を表示し、前の行にデータが含まれるたびに次の行を挿入して、フッター行を 1 行下に移動し、合計数量と金額を計算するために使用される数式を更新したいと思います。

これは本当に可能なのでしょうか?

答え1

あなたや、これをやろうとする他の人への警告として:

今、あなたは次のことを考えるべきです:

  • 顧客ごとにこれをどのくらいの頻度で使用しますか?
  • 顧客は何人いますか?
  • これらの項目はどのように入力すればよいですか?
  • アイテムは何種類ありますか?

これらは最も重要な質問です。私はかなりその通り非常に小さな会社で、月に 3 枚程度の領収書を発行する場合、何をしようとしているのでしょうか。

いつものように、速く、安く、Excel のみでお願いします。しかし、上記の質問をする人は誰もいませんでした。主に安く、Excel のみのためです。そして今、領収書を検索して修正するたびに、特に項目を追加するときに、どれだけの時間が失われるかは明らかです。同じ項目の異なる形式がいくつ存在するかは言うまでもありません。Excel でこれを修正することは可能ですが、私見では、本当に面倒です。顧客も納得し、EPR が設定されました。

これはデータベース タスクです。これはデータベース タスクの最も優れた例の 1 つです。

さらに、これは中小企業の ERP システムとしても価値があるかもしれません。ドイツでは、JTL-Wawi をお勧めします。

しかし、これがあまりにも大きな飛躍である場合は、Access の使用を真剣に検討する必要があります。

いくつかの利点:

  • 顧客を管理できる
  • アイテムを管理できます
  • ダイナミックな行動をアクセスに動かすことができます
  • 領収書を簡単に管理できます
  • 出力システムとしてExcelを使用することもできます

これはどのように機能するのでしょうか?

顧客と品目、領収書用のテーブルがいくつかあります。領収書テーブルは、顧客を品目やその他の領収書関連属性に結び付けます。

次に、基本的な領収書用に設計されたレポートを作成し、Access から印刷します。または、Excel を使用して領収書を選択し、データを取得して印刷します。データは事前​​に決定されているため、行数と列数、およびそのコンテキストがわかります。

ただし、このホイールはすでに何度も発明されているので、既存のものを調べる必要があります ;)

編集

あなたの動作要求に基づいた解決策としては、ここでのこの試みが使えます:

https://stackoverflow.com/questions/12604274/excel-vba-is-there-a-textchanging-textchanged-or-a-similar-event-or-how-to/12604570#12604570

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = clngColumnRightToLastGrade Then
    Application.EnableEvents = False
    'offset selection, one row down, two cols to left
    Target.EntireRow.Insert (xlShiftDown) 'insert new row
    Target.Offset(1, -2).Select
    Application.EnableEvents = True
  End If
End Sub

もちろん、Change代わりにイベントを使用することもできますが、この動作を動的リストの最大範囲またはそのワークシートに制限する必要があるかもしれません。

または、ここでこの行を実行するために、ショートカットキーごとにアクセス可能なマクロを作成します。

Target.EntireRow.Insert (xlShiftDown) 'insert new row

範囲を設定するには、現在選択されているセルを決定する必要がありますTarget

関連情報