アプリ版:「スタンプのみでお礼する」機能のリリースについて

お忙しいところ、すいませんがよろしくお願いいたします。
グループの最後の行に書式、計算式なども同じ行を追加する

  A   B   C  D
1 A商品 単価 金額 合計
2 A商品 単価 金額 合計
3          A商品合計
4 
5 B商品 単価 金額 合計
6 B商品 単価 金額 合計
7          B商品合計

A商品を購入したら 3行目に行を追加してここに入力。
B商品を購入したら 7行目に行を追加してここに入力できるようにしたいと思います。
4行目は空白です。商品間は何行か空白としています。

質問者からの補足コメント

  • すいませんでした。商品名は入力して検索をしたいと思います。

      補足日時:2022/05/18 10:21
  • 商品名を入力フォームで入れて検索をしたいと思います。

      補足日時:2022/05/18 10:57
  • 検索もマクロで入力フォームで入れて検索をしたいと思います。

      補足日時:2022/05/18 10:58
  • うーん・・・

    ありがとうございます。
    b商品を選択してコマンドボタン(商品コード選択)を押すと11行迄のb商品後に追加されるようになりました。
    この追加を書式、計算式のみにしたいのですが、どうもうまくいきません、よろしくお願いいたします。

    「グループの最後の行に書式、計算式なども同」の補足画像4
    No.5の回答に寄せられた補足コメントです。 補足日時:2022/05/19 11:53
  • へこむわー

    どうも面倒くさい質問をしてすいませんが、素人でわかりませんが、色々調べてみましたが、書式計算式との選択は無いのですか?。
    一旦入れて、値を消すのですか?b商品の最後の行番号を取り出したいと思いますがこれも良くわかりません。

      補足日時:2022/05/19 17:20
  • うーん・・・

    前回の追加はありがとうございました。うまくできました。
    同じフォーム、テキストボックスなので、あわせて教えて頂けないでしょうか。
    テキストボックスで指定したもののみを選択して 品名、日付順にソートする。
    忙しいところ誠にすいません。B商品の日付順です。

    「グループの最後の行に書式、計算式なども同」の補足画像6
    No.6の回答に寄せられた補足コメントです。 補足日時:2022/05/21 11:58
  • つらい・・・

    Qchan1962さん、おはようございます。 昨日は大変失礼を致しました。
    色々、面倒な質問対応してくれてありがとうございました。
    行の追加上手くできるようになりました。
    ソートの件は別にしたいと思います。

    No.7の回答に寄せられた補足コメントです。 補足日時:2022/05/22 08:19

A 回答 (7件)

#6の追質について


表組みも変わっているし・・・
まぁ、改造も出来ていると言う事でしょうしコードも理解されたと言う事でしょうから、これだけで良いかな

Call r.CurrentRegion.Sort(Key1:=r.Offset(, 1), Order1:=xlAscending)

#6のコードを基に表組みに合わせた回答です

>グループの最後の行に書式、計算式なども同じ行を追加する
とは、内容が違いますので別スレにしてください。
(規約、マナー違反に牴触します)
この回答への補足あり
    • good
    • 0

こんばんは


>一旦入れて、値を消すのですか?
その方法が簡単がと思います。
>b商品の最後の行番号を取り出したいと思いますがこれも良くわかりません。

最後とは、挿入後?挿入前?
#5のコードを書き直してみるので 確認してください
*(A列に区切りの空白セルがある)場合

Private Sub CommandButton1_Click()
Dim zaiko As String
Dim r As Range, C As Range
zaiko = ListBox1.List(ListBox1.ListIndex, 0)
With ActiveSheet
Set r = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)) _
.Find(What:=zaiko, LookIn:=xlValues, LookAt:=xlWhole, After:=Cells(Rows.Count, 1).End(xlUp))
End With
If Not r Is Nothing Then
With r.End(xlDown)
MsgBox .Row 'これ?
.Resize(, 4).Copy
.Offset(1).Insert Shift:=xlDown
Application.CutCopyMode = False
For Each C In .Offset(1, 1).Resize(1, 3)
If Not C.HasFormula Then C.Value = ""
Next
MsgBox .End(xlDown).Row ''これ?
End With
End If
End Sub
この回答への補足あり
    • good
    • 0

#1#2を回答した者です


他のご質問者様のご質問を見て ご質問にある表組
(A列に区切りの空白セルがある)場合で
ユーザーフォームにボタンとリストボックスを設置した場合の参考コードです。

リストを作成するにあたり、Unique関数を使用していますので
Microsoft 365およびOffice 2021の Excel 又はOffice Insiderに参加しているExcelが対象になります
Unique関数が使用できない場合は、
セル範囲を利用してリストを作るか
DictionaryやCollectionなどなどで作って下さい

ユーザーフォームのモジュールに
Private Sub CommandButton1_Click()
Dim zaiko As String
Dim r As Range
zaiko = ListBox1.List(ListBox1.ListIndex, 0)
With ActiveSheet
Set r = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)) _
.Find(What:=zaiko, LookIn:=xlValues, LookAt:=xlWhole, After:=Cells(Rows.Count, 1).End(xlUp))
End With
If Not r Is Nothing Then
With r.End(xlDown)
.Resize(, 4).Copy
.Insert Shift:=xlDown
Application.CutCopyMode = False
End With
End If
End Sub

Private Sub UserForm_Initialize()
Dim myList, i As Long
myList = Application.Unique(Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)))
For i = 1 To UBound(myList)
If myList(i, 1) <> "" Then ListBox1.AddItem myList(i, 1)
Next
End Sub
この回答への補足あり
    • good
    • 0

こんにちは。



ご質問の内容だとピボットテーブルを使うのが良いと思います。
商品別、月別などで簡単に集計できますよ。

キーワード: ピボットテーブル

小計欄を挿入するのは、データ加工の支障になります。

VBAの学習目的であったり、印刷の都合があるなどの
事情が無い限り、集計欄は行頭など邪魔にならない場所、
あるいは別シートなどがオススメです。
    • good
    • 0

合計・空白行は入れず、商品毎に並べ替えして小計機能ではダメなんでしょうか?

    • good
    • 0

私が回答できるかは分かりませんが


作成されたフォーム要件を掲示が必要です。
また、A商品は複数存在すると理解していますが、どこのセルを対象にするのかなど要件を提示する必要もあります

更に記せば、作成されたフォームのリストボックスの基データを
何処から参照するのか(商品リスト)の要件説明、重複データに対する処理、該当データがない場合の要件などを示す必要があります。

現在どこまで出来ているのでしょう?
思いついてすぐに質問したと言う事でしょうか?
出来上がるにつけ、次の思い付きで作ると言う事でしょうか・・・

しっかり行いたい処理を組立、自身で作成し分からない所を絞り
具体的にコードなどを示してご質問を作成される方が良いと思います

不要なやり取りが必要になる事になりますので
ご確認くださいね
    • good
    • 0

こんにちは


>商品名は入力して検索をしたいと思います。
4列分で検索結果セルが選択されているとの解釈で良いなら
Sub test()
Selection.Resize(, 4).Copy
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
End Sub

A商品郡、商品名最後の行なら
Range("A1").End(xlDown).Resize(, 4).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False

検索自体をVBAで行いたい場合は、キーワード入力要件が必要です
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!