![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.8ベストアンサー
- 回答日時:
#1です
#5~7様が回答されていますが
>データはオートフィルタで抽出するので、その都度変わります。
これは、重要な事柄です
フィルターはデータを絞り込んでいますが、データ数が変わったわけではありません
この場合、見えているセルが対象になり
.SpecialCells(xlCellTypeVisible) などで取得します
参考:http://officetanaka.net/excel/vba/tips/tips155d. …
https://www.excel-chunchun.com/entry/20200613-ex …
見えているセルの個数23(行)個をコピー D4セルに貼り付け
24個以降 最後(23刻み?)までをコピーE4に貼り付けなどで良いかも
2行からなので23個では無いか?・・・
記録などで上記参考サイトを参考にアレンジも出来るかも
コードが読めてデバッグが出来るのなら
ご質問に日本語で説明するより、コードで説明する方が簡単です
だって、カテゴリーVisual Basic(VBA)なので
むしろ日本語率もっと低くて良くない?なんて思うくらいですね
例えば、
a = Range("B2", Range("B").End(xlDown)) これはエラーが返ると思いますし
set a= でないので a.Copy これもエラー
唯一 Range("D4").PasteSpecial Paste:=xlPasteValues
D4セルを基軸に値貼り付けしたい が分かります。
初めから間違っているので、ほとんど初心者な事は分かります
しかし、
>関数を一つ一つ調べながら、勉強をしております。
これはとても大事な事です
サンプルコードを書いても鵜呑みにすることは無いかと思います(願います)
Sub Example() '順番に書き込む一例(コピーでない
Dim outRng As Range, inRng As Range
Dim r As Range
Dim i As Long: i = 1
Dim j As Long: j = 1
Set outRng = Range("D4:E6") '出力範囲
Set inRng = Range("B2", Cells(Rows.Count, "B").End(xlUp)).SpecialCells(xlCellTypeVisible)
For Each r In inRng
outRng(i, j) = r.Value
If i < outRng.Rows.Count Then
i = i + 1
Else
i = 1
j = j + 1
End If
Next
End Sub
出力範囲に非表示行が重なるとデータを表示できない
(フィルタ解除で表示される・・)
私の思いは、#3様が挙げる心情には該当はしませんけれど
確かに 自分で考えることを放棄する習慣がついてしまう方は少なからずおられます。
必ず検証して理解を深める事に努めれば良いのですが・・不幸な事です
もっとも、回答に実行数式、サンプル関数、実行プロシージャ、
サンプルコード、例などを書いてはならないと言う規約は無かったかと思います
表組、条件書式、関数はずばりの回答が多いけれど・・・
指名してやり取りをするのは、ダメです
余談ですが
私は独学で此れと言って教えてくれた方も存在しませんでした
そもそもプログラムや処理をするような職になったことはなく趣味の範疇です
独学の経験で記すと 質問サイトは学習する場としては向かないと思います
35年間で1度質問をしたことがありますが、結果自己解決でしたし、
(他のスレッドを見て)回答を待つのも、あーだこーだ言われるのも性に合いませんでした。
何より現在のスキルを明確に示す事が出来ないので回答者もいい加減な回答する人も少なくない時代でしたしね(私もいい加減ですが)
(情報の偏りは否めないかも知れませんが)
実際にリファレンスサイトなどで情報を集め実験、検証した方がデバッグ作業のスキルも身に付きますし、検索スキルも付きます。
初めは少々時間が必要かもしれませんがその方が良いと思います。。
カテゴリーVisual Basic(VBA)でこんな回答をするなんて・・
ともあれ、参考になれば幸いです
ありごうごうざいます。
setが抜けていましたね。失礼いたしました。
お察しの通り初心者でございます。
回答して頂いたコードを元に勉強をさせていただきます。
ありがとうございました。
独学で勉強されるのはとても素晴らしいですね。
自分もできる範囲で検索しながら独学で勉強をしておりますが、また行き詰まった際にはご助力いただければ幸いです。
No.7
- 回答日時:
No.6です。
データ範囲とフィルタをかける位置(列名)と希望する結果を、先の画像のように添付するとわかりやすいかも。
⇒各列幅を少し狭めると綺麗に表示されないかな。
No.5
- 回答日時:
ちょっとした疑問ですので違ってたらスル~されて構いませんので。
オートフィルタを1列にかけて該当したデータを2列にコピペするように思えるのですが、実際はそうなのでしょうか?
ちょっと過去の質問を思い出したのですが、元のデータは複数列あってある列にフィルタをかけヒットしたデータを別の個所に貼り付ける。
ただし行数の制限の為、行数は制限ありの複数列×2で行ないたいってのがむか~しあったので、まさかそんな感じの事ではないよね?と気になっただけです。
No.4
- 回答日時:
>このサイトをどう使うのが正しいのか決めるのはあなたではなく、運営会社です。
(´・ω・`)……ここは作業依頼する場所じゃないんだ。マジで。運営もそう言ってる。
利用規約と投稿ガイドラインをよく読んでみましょう。
No.3
- 回答日時:
縦方向に何セルずつに分ければよいか、計算できますか?
できるのであれば、その計算を元に考えてみましょう。
本当は縦に並んだデータを横数列に分けて並べたいのだろうと推測してみました。
まあ、この考え方できれば、あとは For Next で何とでもなります。
・・・
どの段階で躓いているのかを示すと具体的な解決方法のアドバイスを貰えますよ。
例:
「データが入力されている最終行を取得できません」
・・・余談・・・
質問者さん的には
「そんな御託は良いから汎用性のあるテンプレートになるコードを見せろ」
……ってことなんでしょうけど、
残念ですが、ここは「代わりに作れ」と作業依頼する場所ではなく、
自身で問題を解決できるようになるためのアドバイスを貰う場所なんです。
それでも代わりに作ってくれたり、答えを教えてくれる人はいますが、
そんな人は
「オレ様はこんなの余裕でできるんだぜwww」
という思い上がりか、
「ベストアンサー貰えるならなんだってするぜ!」
という欲深い奴か、
「自分で考えることを放棄する習慣をつけさせちゃえwww」
という意地悪な奴か、
……でしょう。
No.2
- 回答日時:
こんにちは
半分に分けて、転記すれば良いのではないでしょうか?
r = Int((Cells(Rows.Count, 2).End(xlUp).Row - 1) / 2)
If r > 0 Then
Cells(4, 4).Resize(r).Value = Cells(3, 2).Resize(r).Value
Cells(4, 5).Resize(r).Value = Cells(3, 2).Offset(r).Resize(r).Value
End If
No.1
- 回答日時:
こんにちは
一気にコピーでは出来ないかと
貼り付け先の範囲に合わせて .Rows.Count .Columns.Countで取得
サイズに合わせてコピぺ
xlPasteValues 書式設定が不要の場合(値のみ)は
取得、出力すれば良いと思います
コードが欲しい場合は、出力先範囲を超える場合の定義が必要です
VBAの理解度やデーター数量なども欲しい所です・・
(配列を作って出力する方が早いけれど、判り難いかもなので)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- その他(Microsoft Office) エクセルVBA 3 2022/06/09 08:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
COBOLのMOVEで桁数が異なる場合
-
cout と cerrの違い
-
c言語でグラフをつくる
-
CrystalReportの文字列の折返し...
-
プログラムについての質問です...
-
MMDでavi出力が出来ない
-
printfとputcharの違いは
-
ACCESS クエリ→フォーム...
-
無限ループで出力ストリームが...
-
テキストファイルから特定の文...
-
C# 標準出力のencodingをutf8に...
-
Accessの値をExcelに縦横入替出...
-
gnuplotで複数のwindowを開くに...
-
VBAのExecメソッドで画面を非表...
-
Mac版 Excel VBA PDF出力フォル...
-
プログラミングの問題です。至...
-
wsprintfで浮動小数を扱うには?
-
makeで文字化けする。migwのmak...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
printfとputcharの違いは
-
VBA レジストリの値の読み方に...
-
プログラムについての質問です...
-
MMDでavi出力が出来ない
-
cout と cerrの違い
-
詳しくないので、どなたかお教...
-
COBOLのMOVEで桁数が異なる場合
-
ACCESS クエリ→フォーム...
-
VBAでテキスト出力時のスペース...
-
OBS配信すると、マイクが途切れ...
-
PS5をMacBookProに出力したいの...
-
コンセントの電力は入力と出力...
-
アクセスでエクセルに出力する...
-
printfの書式%.*s
-
Windows Formアプリからコンソ...
-
coutで出力した文字を消去する...
-
VBAで有効数字の設定
-
VBAのExecメソッドで画面を非表...
おすすめ情報
回答していただき、ありがとうございます。
表のサイズに合わせてコピぺすることができるんですね。
データはオートフィルタで抽出するので、その都度変わります。
出力先範囲は23行です。
VBAの理解度についてはほとんど初心者と変わりません。
関数を一つ一つ調べながら、勉強をしております。
お手数をおかけしますが、宜しくお願いいたします。
お忙しい中、回答していただきありがとうございます。
申し訳ございませんが、まだ未熟者ですので仰っていることが理解できません。
余談の件は前にもお伝えしましたが、それはあなたの考え方であり他人に押し付けるものではありません。このサイトをどう使うのが正しいのか決めるのはあなたではなく、運営会社です。
また、折角回答をしてくださる方の人格を否定するような発言は控えていただけませんか?
自分の考え方や価値観が世の中の基準だと思い込むのは、やめたほうがいいですよ。
人にはそれぞれの考え方や価値観があります。それを尊重し理解し合うよう努力するのが社会です。
あなたのような人が匿名性を良いことに、インターネットで人を誹謗中傷するんですね。
その通りです。
オートフィルタを一列にかけて、該当したデータが23行以上の場合は2列に分けたいんです。
いい方法はありますか?
申し訳ございません。
コピーするデータは3列あります。