以下のような場合、マクロをどのように書けば良いか教えてください。
A列 B列 C列
あ 1
い 2
う
あ 3
い 4
う
※実際は1000以上行数があります
■やりたいこと
A列で「あ」でフィルタをかける
A列のフィルタがかかったままB列をコピー
C列に貼り付け
結果、以下のようになってほしいです。
A列 B列 C列 A列 B列 C列
あ 1 あ 1 1
あ 3 い 2
⇒ う
あ 3 3
い 4
う
初心者なりにいろいろ試してみましたがうまくいきません。
ご教示いただけますと幸いです。
どうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは!
A列が「あ」であればC列がその行のB列データになれば良いのですね。
オートフィルタではなく、単に値の代入ではどうでしょうか?
No.1さんもおっしゃっているようにオートフィルタの場合は1行目が何らかの項目行になっている!というコトが前提だと思いますので、
2行目以降にデータがあるとします。
Sub Sample1()
Dim i As Long, lastRow As Long
Dim myR
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
myR = Range(Cells(2, "A"), Cells(lastRow, "C"))
For i = 1 To UBound(myR, 1)
If myR(i, 1) = "あ" Then
myR(i, 3) = myR(i, 2)
Else
myR(i, 3) = ""
End If
Next i
Range(Cells(2, "A"), Cells(lastRow, "C")) = myR
End Sub
こんな感じではどうでしょうか?m(_ _)m
こんばんわ。ご回答ありがとうございます。お礼が遅くなり失礼いたしました。
値の代入…そんな発想思いつきもしませんでした。勉強になります。本当にありがとうございました!
No.4
- 回答日時:
No.3です。
A列を「再販」でフィルタかけてからマクロを実行するのではないですか?
そもそも、そういうマクロを作りたいという質問でしょ!!
No.3
- 回答日時:
アクティブシートのフィルタ範囲を全体的に1行下げた範囲(見出し行を除くため)の可視行を対象に、B列の値をC列に移送してみました。
こんな感じです。Sub sample()
Dim r As Range
For Each r In ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Rows
Cells(r.Row, "C") = Cells(r.Row, "B")
Next r
End Sub
こんにちは。
ご回答ありがとうございます。移送できました!
ここにA列が「再販」なら、という条件をつける場合はどうすればよろしいでしょうか。
No.1
- 回答日時:
こんばんは。
このマクロは、オートフィルターのヘッダー付きを想定して作られたものです。
aaa bbb '←ヘッダー(先頭行の見出し)
あ 1
い 2
う
あ 3
い 4
'FieldとCriteria1(オートフィルターの検索値)は、マニュアルで変更してください。
2000~3000行程度なら、問題はないはずですが、このマクロの限界値は、バージョンによっては、6万行ぐらいに出てくる可能性があります。その場合は、貼り付けを分割しないといけません。
それと、途中で、結合セルがあったら解決しません。
'//
Sub TestSortnCopy()
Dim Rng As Range
Dim Ar As Variant
Dim cnt As Long, i As Long
With ActiveSheet
If .AutoFilterMode Then
.AutoFilterMode = False
End If
Set Rng = Range("A1", Cells(Rows.Count, 1).End(xlUp))
cnt = Rng.Rows.Count
ReDim Ar(cnt - 1)
Rng.Resize(, 2).AutoFilter _
Field:=1, _
Criteria1:="あ" 'オートフィルターの検索値
Application.ScreenUpdating = False
For i = 1 To cnt
If Cells(i, 2).EntireRow.Hidden = False Then
Ar(i - 1) = Cells(i, 2).Value
Else
Ar(i - 1) = ""
End If
Next
.AutoFilterMode = False
.Range("C1").Resize(cnt).Value = Application.Transpose(Ar)
Application.ScreenUpdating = True
End With
End Sub
こんばんわ。早速のご回答ありがとうございます!お礼が遅くなり失礼いたしました。
実はまだ試せていないのですが…時間がかかりそうですが、1行1行理解を深めて勉強してまいります。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでフィルタ後の列の重複を回避したい 6 2022/10/13 12:50
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- その他(Microsoft Office) エクセルマクロ オートフィルターでで選択コピー 2 2022/04/18 11:05
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) エクセル 表の作り方ご教示ください 5 2023/07/01 01:02
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
VBAで文字列を数値に変換したい
-
エクセル 同じ値を探して隣の...
-
エクセルで最初のスペースまで...
-
エクセル初心者です 関数の入れ...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
LOOKUP関数を使えばいいのでし...
-
エクセル 文字数 多い順 並...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
エクセルで文字が混じった数字...
-
エクセル(勝手に太字になる)
-
エクセルの項目軸を左寄せにしたい
-
重複行を削除して数値を合算し...
-
エクセルの並び変えで、空白セ...
-
EXCELで 一桁の数値を二桁に
-
基準日よりも古い日付の列を削...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
エクセル 同じ値を探して隣の...
-
VBAで文字列を数値に変換したい
-
エクセルの並び変えで、空白セ...
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
[関数得意な方]教えて下さい・...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 時間帯の重複の有無
-
Excelにてある膨大なデータを管...
おすすめ情報