No.5ベストアンサー
- 回答日時:
>これがうまくいきません
確かに... orz
申し訳ないですが、問題が解決しない場合、下記コードを
標準モジュールに貼り付けて実行してください
(事前に対象範囲を選択しておきます)
Sub Macro1()
Dim r As Range
Dim t As Range
Application.ScreenUpdating = False
Set r = Selection.SpecialCells(xlCellTypeVisible)
For Each t In r
t = t.Value
Next
Application.ScreenUpdating = True
End Sub
番号を振るマクロは、いまいち動作に確信が持てなかったので保留です
ごめんなさい
>確かに... orz
ああっ、そんなに落ち込まないで下さい(笑)
お陰様で解決しました。こちらのマクロも永久保存です。
もう少し締め切らずにおきますが、本当にありがとうございました。
No.13
- 回答日時:
こんばんは。
たいへんそうですね。
仮にE列を作業列として、
> 全部1になってしまい、
をまずやってください。
オートフィルタで寄せた状態の可視セルのE列に”1”が入ります。
次にオートフィルタを解除してすべて表示に戻してください。
次にA2以下に連番を振るとして、
A2=IF(E2="","",COUNT(E$2:E2))をデータのある最下行までフィルコピー。
以上で、オートフィルタで寄せた状態の可視データのみに連番をふることができます。
後は、A列を値のみ上書きコピーすればOKです。
もし勘違いしていたとしたらすいません。
可視の行のみ数値が入っている列がありますので、こちらの関数も使えそうです。
皆様のおかげで、解決にこぎつけることができました。
ありがとうございました。
No.12
- 回答日時:
[No.11回答に対するお礼/補足]に対するコメント、
コピーしたいのは特定の列の可視セルのみであること、了解。話を簡単にするために、連番の列とその隣の列の2列だけにしておきましょ。
》 フィルターを解除した時もその連番を保持しておき
》 たいため、コピー→値でペーストしたいのです。
分かってますよ。
》 単一セル指定とは、コピーしたい行の一番上のセル
》 のみを選択するということでよろしいでしょうか?
[貼り付け]先の範囲の左上隅のセルのみを選択すること。
》 「一番上のセルだけを選ぶと、可視セルではないセ
》 ルにも貼り付けられてしまいます。」
どうも言い回しが変だ(話が噛み合わない)と思ったら今気が付きました。
貴方の[貼り付け]先は、[オートフィルタ]が掛けられた行範囲(例えば右側上方)にしていますね。そして、[貼り付け]操作をした後も、[オートフィルタ]を掛けたまんまにしているのですね。[オートフィルタ]を解除しないと駄目ですよ。解除したくないなら、[オートフィルタ]の影響を受けていないズーッと下の範囲(可能なら、別シートの上方にでも)に[貼り付け]なきゃ。
どうやら、希望している操作は難しいようですね。
関数やVBAに頼らない、一発技があるとベストだったのですが。
でも、お陰様で無事解決しました。ありがとうございました。
No.11
- 回答日時:
[No.10回答に対するお礼]に対するコメント、
いささか疲れてきましたが…(ギブアップしそう)
》 これを行うと可視セル全てが選択されてしまう…
それでなぜ好けないのですか?
可視セルのみをコピーしたいのでしょ?
「可視セルのみ」=「可視セル全て」でしょ?
》 2)コピー先を同じ行数分範囲指定→「可視セルを選択」
「同じ行数分範囲指定」を「単一セル指定」にしたら?
なぜ、また→「可視セルを選択」したの?何のために?
本当に何度もすみません…申し訳ないので締め切ろうかとも考えましたが、うやむやのまま切るのはすっきりしないかもと思い、補足します。
このまま2~3日締め切らずにおきますので、もしご納得されました場合は放置していただけますか。
>可視セルのみをコピーしたいのでしょ?
いえ……ごめんなさい、そうではなく、特定の行だけです。
質問文とNo.2のお礼欄をお読みいただければいいかと思いますが、最終目的はフィルターで寄せた可視の行のみ、連番で番号を振ることです。
SUBTOTAL関数で連番を振った、ある特定の行のみを、フィルターを解除した時もその連番を保持しておきたいため、コピー→値でペーストしたいのです。
他の行は処理に必要な関数が入っていますので、そちらはそちらで値になってしまうと、困ったことになってしまいます。
>「同じ行数分範囲指定」を「単一セル指定」にしたら?
単一セル指定とは、コピーしたい行の一番上のセルのみを選択するということでよろしいでしょうか?
その場合はNo.9のお礼欄に書きましたとおり「一番上のセルだけを選ぶと、可視セルではないセルにも貼り付けられてしまいます。」という結果になります。
多大なるお時間を割いていただき、感謝しております。
No.10
- 回答日時:
[No.9回答に対するお礼]に対するコメント、
》 1:フィルターで寄せた可視セルをコピー
[コピー]する直前に、
[編集]→[ジャンプ]→[セル選択]で“可視セル”に目玉入れて[OK]をクリック
を実行してみてください。その後[コピー]するのです。
そうすれば「可視でないセルに」でなく「可視でないセルが」「貼り付けられてしまい」にはならないと思います。(テニヲハを間違えないように)
>[編集]→[ジャンプ]→[セル選択]で“可視セル”に目玉入れて[OK]をクリック
を実行してみてください。その後[コピー]するのです。
すみません、これを行うと可視セル全てが選択されてしまうのですが…。
ちなみに
1)範囲指定をした後、ツールバー内の「可視セルを選択」してコピー
2)コピー先を同じ行数分範囲指定→「可視セルを選択」
して普通に貼り付けようとすると、
「そのコマンドは複数の選択範囲に対して実行できません」とエラーが出ます。
No.9
- 回答日時:
[No.6回答に対するお礼/補足]に対するコメント、
》 メッセージは「領域が違う」とは違うかもしれません
正しいメッセージをお知らせください。誤った情報は第三者を混乱させます。
》 ちなみに当方エクセル2000です。
私が試していたのは Excel 2002 でしたが、同じことを Excel 2000 で試しました。結果は後述。
[No.4回答に対するお礼]の中で、「値として貼り付けのコピーが前提となる」と仰っていましたが、その理由もお知らせください。
》 フィルターで寄せたまま、可視セルだけを値でコピ
》 ーできますか?
ていうか、可視セルだけを(通常の)[貼り付け]すると、連番の =SUBTOTAL()部分は結果的に[値の貼り付け]になります。
さて、Excel 2000 の場合、[オートフィルタ]で抽出された(結合セルを含む)レコードを別の場所に[値の貼り付け]を実行すると、「この操作には、同じサイズの結合セルが必要です」と叱られて、コピーに失敗します。通常の[貼り付け]は問題なく可能です。
Excel 2002 の場合、同様のコピー失敗は発生しません。
》 セルの結合はありません
そうですか。何れにしても、コポー失敗時に何というメッセージが出るのかを知りたいものです。
何度もありがとうございます。
まずは、エラーメッセージの件につきまして。
再度試してみたところ、
1:フィルターで寄せた可視セルをコピー(仮に10行×1列とします)
2:その隣の行、可視セルを10行×1列を選択
以上の前作業を行ったのち「値をペースト」しようとすると「コピー領域と貼り付け領域の形が違うため、情報を貼り付けることができません」と出ます。
かといって、一番上のセルだけを選ぶと、可視セルではないセルにも貼り付けられてしまいます。
>ていうか、可視セルだけを(通常の)[貼り付け]すると、連番の =SUBTOTAL()部分は結果的に[値の貼り付け]になります。
こちらも試してみました。確かにそのまま「貼り付け」で、値として貼り付けられましたが、可視でないセルにも貼り付けられてしまい、貼り付けたい行に張り付きません。惜しいです。
値として貼り付けたいのは、フィルターを解除した時も寄せた時と同じ番号がそのまま残っていて欲しいためです。
以上補足致します。
No.8
- 回答日時:
オートフィルタという操作に拘らないなら
全て表示の状態で
=IF(A2="a",MAX($B$1:B1)+1,"")
と入れて、最終行まで複写でよいと思う。
aは条件の文字列で大小、含む、でないなどが=の代わりに使えるし
A列はa,かつB列はbなどの条件も使えます。
これを式の値=C1とでもすれば、C1の文字列数字を変えると、条件が変えられます。
ニーズに合っているかどうか判らないが。
imogasiさん、お久しぶりです。
なるほど、フィルターにかけている条件をそのまま関数にということですね。
今回条件がかなり複雑ですので難しそうですが、フィルターにかける条件が単純な時に是非こちらを使わせていただきます。
どうもありがとうございました。
No.7
- 回答日時:
>解決しました。
良かった!! (涙)
>もう少し締め切らずにおきますが
妙手が見つかるといいですね
下記マクロ「連番君」、保証はしかねるブツですが
もしよろしければご笑納ください
(テストした限りでは大丈夫かな?とは
思うのですが)
'選択範囲の可視セルに連番を振ります
Sub Macro2()
Dim areaR As Range
Dim dstR As Range
Application.ScreenUpdating = False
Set areaR = Selection.SpecialCells(xlCellTypeVisible)
Dim i As Long, cnt As Long
cnt = 1
Dim s As Range
For Each dstR In areaR.Areas
For i = 1 To dstR.Count
dstR.Cells(i, 1) = cnt
cnt = cnt + 1
Next
Next
Application.ScreenUpdating = True
End Sub
こちらも早速保存しました。汎用性があるので、きっと今後出番はあると思います。
VBA初心者のくせに、このサイトのおかげで職場ではいっぱしのマクロ使いの顔をしております(^^;)
本当にありがとうございました。
No.6
- 回答日時:
[No.4回答に対するお礼]に対するコメント、
》 その場合は「領域が違う」と言われてコピーできま
》 せん。
「その場合」と「領域が違う」は関係ないのでは?
私がテストした限りでは、仰るような現象は出ません。
セルの結合を多用していませんか?
色々試していたので、メッセージは「領域が違う」とは違うかもしれません、ごめんなさい。
ですが、コピーができないのは本当です。
フィルターで寄せたまま、可視セルだけを値でコピーできますか?
ちなみに当方エクセル2000です。
No.4
- 回答日時:
[No.2回答に対するお礼]に対するコメント、
No.3では、No.2と全く同じ回答になってしまって申し訳ありませんでした。
さて、[オートフィルタ]を実行して抽出されたデータを[コピー]して、他の空いた場所に[貼り付け]たらどうなりますか?
ありがとうございます。
1:フィルタを寄せたまま
2:値として貼り付け
のコピーが前提となるのですが、その場合は「領域が違う」と言われてコピーできません。
かと言って、セル一つだけを選んでペーストすると、フィルタで寄せていないセルに番号が入ってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- 据え置き型ゲーム機 PS4グランド・セフト・オートについて 2 2022/06/03 20:51
- Wi-Fi・無線LAN タブレット端末のWi-Fi接続 3 2022/07/26 16:13
- Excel(エクセル) Excelのセル上の日付の不具合 3 2022/05/22 18:20
- Excel(エクセル) エクセルでフィルタ後、考えている場所に値コピーができない。 1 2022/05/02 21:01
- 一眼レフカメラ プログラムオートといわゆるオートの違いは? 1 2022/09/11 20:20
- 車検・修理・メンテナンス ワゴンRパワーウインドウの不具合 平成24年MH34S 昨日運転席の内張を外す作業をして、パワーウイ 1 2022/08/15 09:39
- Visual Basic(VBA) オートフィルタで抽出結果に 罫線をひく方法 1 2022/07/13 13:08
- 国産車 車のミラーがオートで閉まるように設定してあります。 車のエンジンを切って車を降りてドアのノブのボタン 9 2023/02/08 21:18
- 車検・修理・メンテナンス USBポート、ヘッドライト点灯と連動するのは? 2 2022/11/13 20:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスの更新クエリでカレン...
-
ACCESS VBA でのエラー解決の根...
-
Access レポート印刷するときに...
-
Access IF文でテーブルに存在し...
-
Accessのリンクテーブルのパス...
-
Accessのクエリで、replace関数...
-
【世界はデータで出来ている】...
-
Accessのスプレッドシートエク...
-
Vba Userformを前面に出すについて
-
Accessで独自メニューバーまた...
-
アクセス レポートを開いたとき...
-
アクセスで教えてください。 住...
-
Accessレポートのチェックボッ...
-
AccessVBAについて テーブルの...
-
マイクロソフト アクセス2021の...
-
Accessのテキストボックスの入...
-
Microsoft365にAccessってあり...
-
Access DAOのExecuteメソッドの...
-
アクセス where句を使用して複...
-
windowos 11 Microsoft Edgeを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access レポート印刷するときに...
-
Access Error3061 パラメータが...
-
Microsoft365にAccessってあり...
-
Accessのクエリで、replace関数...
-
Accessのリンクテーブルのパス...
-
Access VBA [リモートサーバー...
-
ACCESS VBA でのエラー解決の根...
-
accessデータを指定したExcel、...
-
Accessのスプレッドシートエク...
-
CSVファイルの「0落ち」にVBA
-
【Access】Dcount関数の複数条...
-
Accessのフォーム上のテキスト...
-
Access VBA を利用して、フォル...
-
実行時エラー3131 FROM 句の構...
-
Vba Userformを前面に出すについて
-
Accessでフォームに自動入力し...
-
Accessレポートのチェックボッ...
-
Accessのテキストボックスの入...
-
Access 複数条件検索の設定が上...
-
accessのフォームに設置したボ...
おすすめ情報