[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『色つきセルを選んで移動するには?』(KAME)
お世話になります。
A1:A4の間のセルでセル色が青だけをB1:B4へ上から詰めてコピーさせるには
どのようにすれば良いか?ご教授の程よろしくお願いします。
例)
A1 セル色 赤
A2 セル色 青
A3 セル色 無し
A4 セル色 青
A B A B 1リンゴ 1 リンゴ みかん 2みかん 2 みかん バナナ 3なし → 3 なし 4バナナ 4 バナナ
WIN2007 EXCEL2010
1行目をタイトル行にして、オートフィルターを設定。 色フィルターで青を選んで抽出。青だけになったA列を選んで別のシートにコピペ。 元シートのオートフィルターを解除した上で、別シートからB列にコピペ。
(ぶらっと)
2010なら。こんな方法も。
範囲を選択(このばあいA1〜A4) Ctrl+F または ホームタブにある「検索と選択」から「検索」
出てきた画面でオプションボタンを押す。 右上の書式ボタンを押す。 塗りつぶしタブで青を選択。OKして閉じる。 そのまま(検索する文字列には何もいれずに)「すべて検索」ボタンを押す。 下に青色のセル名が一覧で並ぶので、Shift押しながら一番上と一番下をクリックして全部を選択。 そのまま「閉じる」ボタンを押す。
シートに戻ると青のセルだけ選択状態になっているので、そのままコピー。 B1を選択してペースト。
こんなもんで。 (1111)
言葉足らずで申し訳ありません。
実は質問の動きをVBAでさせたいのです。
どうかアドバイスをよろしくお願い致します。
こんなのでは?
Sub sample() '青色が付いていたら隣の列に値を転記
Dim iro As Long
Dim c As Range, r As Range, t As Range
Set t = Range("B1") '転記先
Set r = Range("A1", Range("A" & Rows.Count).End(xlUp)) '転記元
r.Offset(, 1).ClearContents '転記元の隣の列をクリア
For Each c In r
iro = c.Interior.Color
If iro = vbBlue Then
t.Value = c.Value
Set t = t.Offset(1)
End If
Next
End Sub
(usamiyu)
別案で。
Sub Sample()
Dim c As Range
Dim k As Long
Dim V() As Variant
Dim myColor As Long
myColor = vbBlue '指定色
'念のため空白セルで色塗りセルがA列の下にある状況もカバー
With Intersect(ActiveSheet.UsedRange, Columns("A"))
ReDim V(1 To .Rows.Count, 1 To 1)
For Each c In .Cells
If c.Interior.Color = myColor Then
k = k + 1
V(k, 1) = c.Value
End If
Next
End With
Columns("B").Clear
With Range("B1").Resize(k)
.Value = V
.Interior.Color = myColor
End With
End Sub
(ぶらっと)
参考出品。上でコメントしたオートフィルター処理。(タイトル行は不要)
Sub Sample2()
Columns("B").Clear
Range("A1").Insert
Range("A1").Value = "Dummy"
ActiveSheet.AutoFilterMode = False 'Just in Case
Range("A1").AutoFilter Field:=1, Criteria1:=vbBlue, Operator:=xlFilterCellColor
With ActiveSheet.AutoFilter.Range
If .SpecialCells(xlCellTypeVisible) > 2 Then .Copy Range("B1")
End With
ActiveSheet.AutoFilterMode = False
Rows(1).Delete
End Sub
(ぶらっと)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.