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

Excelピボットテーブルで
総計を先頭行にもって行きたいのですが、
以前、できないと聞いたので、
コピーして別シートで加工することにしたのですが、
マクロで作成したいです。
総計の行を選択するにはどうしたらよいですか?
毎回総計の行の位置は毎回変わります。。
そんなことはできませんか?

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

  • ありがとうございます!
    項目数は変わらないので、列は固定です。
    行だけ変わる感じです!

      補足日時:2020/09/03 19:54
  • うーん・・・

    教えていただいたもので、総計セルを検索して、検索した行をコピーしてある行へ貼り付けるのをマクロで作成しようとすると、毎回行は固定されちゃいますか?
    例えば今回総計がA50にあったとして
    、総計の場所検索してコピーしてある行へ貼り付けます。その行をコピーして貼り付けます。
    次回総計がA100にあったとしても、
    A50の行をコピーされるのではなく、ちゃんとA100がコピーされますか?そんな都合の良い感じではできませんか?分かりにくくてすみません。

      補足日時:2020/09/04 00:08
  • うーん・・・

    vbaできないので、マクロで操作を保存してます。
    コントロール+Fで総計を検索して、
    その行をシフト+スペースで選択して
    A4のセルに貼り付けをしました。

    貼り付けするところは同じですが、
    やはり行が変わると、対応できないです。
    検索は毎回できてます。

      補足日時:2020/09/06 16:16
  • やはり無謀ですかね。。

      補足日時:2020/09/06 22:47
  • どう思う?

    どのようにすれば、検索した文字の列を選択できますでしょうか?お手数おかけします。

    「Excelピボットテーブルで 総計を先頭」の補足画像5
      補足日時:2020/09/07 12:11

A 回答 (6件)

FindとCopyの間の「7行目のSelect」と「B7のActivate」は、どんな操作を記録したんですか?ここが決め打ちだとFindした意味が無いですよね。


たぶん、「その行をシフト+スペースで選択して」の部分だと思いますが、ここをちょっと工夫すれば、行けそうな気がします。
ちなみに、私の環境(Excel2010)では、「シフト+スペース」が上手く機能しなかったので、「End、Shift+→」で記録すると次のようになりました。これで、うまくいきませんかね?

Cells.Find(What:="総計", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False, SearchFormat:=False).Activate
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy



ちょっと話は逸れますが、「総計」って、行の計と列の計の2ヶ所ありませんか?
これって、欲しい方がちゃんと検索できるように、すでに考慮済みと考えて良いのですよね?
    • good
    • 0

こんにちは、



Dim myRange As Range
Dim srcRow As Long
Dim keyWord As String
keyWord = "総計"
With ActiveSheet
Set myRange = .Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
On Error Resume Next
srcRow = myRange.Find(keyWord, LookAt:=xlWhole).Row
If Err > 0 Then
MsgBox (keyWord & "は、ありませんでした")
Else
.Rows(srcRow).Copy
.Rows(1).Insert Shift:=xlDown
.Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
End With

サンプルを書きました、参考に成ればと思います。
変更や改修が必要になった時は、ご自身で直せますでしょうか?
VBAは、ある程度のスキルがない場合、デバッグにはそれなりの時間コストがかかる事を
予め認識しておく必要があると思いますのでお願いします。
    • good
    • 0

記録したマクロを補足にアップできますか?

    • good
    • 0

「コピーして別シートで加工する」ということですが、そもそもピボットテーブルをコピーするコードは書けているのでしょうか?書けているのであれば、補足にアップしてみて下さい。


もし、それすら書けないのであれば、総計の行を選択できたとしても、どうしようも無いですよね?
    • good
    • 0

#1です


マクロ実行時に総計があるセルを探しに行くので、変わっても大丈夫だと思いますよ
何より、ミニマムを作成して検証してみては?
あと、コピーについてですが、総計の行に数式がある場合、コピー先によっては
エラー(正しく計算されない)になる可能性があります。したがって値のみのコピペが良いでしょう。
この辺りは、理解しておきましょう。
    • good
    • 0

こんにちは、


色々方法はあると思いますが、行はともかく列も変わりますか?
一例として
Find メソッドを使用します。 https://www.tipsfound.com/vba/07030#:~:text=%E7% …

A列固定で行が変わる場合
Sub test()
Dim myRange As Range
Dim myObj As Range
Dim keyWord As String
Set myRange = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
keyWord = "総計"
Set myObj = myRange.Find(keyWord, LookAt:=xlWhole)
If myObj Is Nothing Then
MsgBox (keyWord & "は、ありませんでした")
Else
Rows(myObj.Row).Select
MsgBox (keyWord & "は、" & myObj.Row & "行目にあります")
End If
End Sub

A列以外にも移る場合は、Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)で変更します。
複数ある場合は、参考サイトをご覧ください。
対象の行を切り取って他の行に挿入するなどは、自動記録だも出来ると思いますので、この辺で
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています