以下のような場合、マクロをどのように書けば良いか教えてください。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
エクセル(勝手に太字になる)
-
Excelで半角の文字を含むセルを...
-
EXCELで 一桁の数値を二桁に
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
エクセルの表から正の数、負の...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
Excel、市から登録している住所...
-
エクセルで、列の空欄に隣の列...
-
エクセル 時間帯の重複の有無
-
VBAで文字列を数値に変換したい
-
エクセルの並び変えで、空白セ...
-
文字列に数字を含むセルを調べたい
-
エクセル 同じ値を探して隣の...
-
エクセルで教えてください。
-
エクセルで一列おきに空白列を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル(勝手に太字になる)
-
Excelで半角の文字を含むセルを...
-
エクセル 文字数 多い順 並...
-
2つのエクセルのデータを同じよ...
-
エクセルで文字が混じった数字...
-
文字列に数字を含むセルを調べたい
-
エクセル 時間帯の重複の有無
-
VBAで文字列を数値に変換したい
-
「B列が日曜の場合」C列に/...
-
エクセル 同じ値を探して隣の...
-
エクセルの項目軸を左寄せにしたい
-
エクセルで、列の空欄に隣の列...
-
お店に入るために行列に並んで...
-
Excel、市から登録している住所...
-
エクセルの並び変えで、空白セ...
-
オートフィルターをかけ、#N/A...
-
エクセルの表から正の数、負の...
おすすめ情報