[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『青文字の抽出について』(けい)
エクセルのフォントで青文字だけを別シートにvbaで抽出したいのですが、
方法が分かりましたら教えて頂けますでしょうか?
具体的には
シート1のA列から、M列の範囲でセルのフォントが青文字だけを別シートに
抽出したいです。
列は変わりませんが最終行は大体1000行ですが月によって変動あります。
セル内で一部青文字というのはなく、同じセルなら全部青です。
フィルターで、aから順番に色フィルターすればいいのかもしれませんが、
量が多いのでvbaで出来ればと思い投稿しました。
よろしくお願いしますΣ(゚д゚lll)
< 使用 Excel:Excel2013、使用 OS:Windows7 >
Sub fontcolor()
Dim End_row As Long
Dim i As Long
Dim c As Long
Dim j As Long
End_row = Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To End_row For j = 1 To 8 c = Cells(i, j).Font.ColorIndex If c = 5 Then Worksheets(2).Cells(i, j) = Cells(i, j) Worksheets(2).Cells(i, j).Font.ColorIndex = c 'ここで文字色指定してます c = c + 1 End If Next Next
End Sub
使用されている文字色が RGB(0,0,255) ならこれで判別できるはずです。
他の色だと判別できません。
ご参考まで。
(pooh) 2017/01/24(火) 13:34
poohさんのパクリです。すいません。こんな感じですね 最終行は、Sheet1のA列だけで判断しています。 A列よりも行の多い列は、ないですよね?? A〜M列までなら、「For j = 1 To 13 '列」ですかね
Sub fontcolor2() Dim r, i, c, j r = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row For i = 1 To r '行 For j = 1 To 13 '列 If Cells(i, j).Font.Color = RGB(0, 0, 255) Then Sheets("Sheet2").Cells(i, j) = Sheets("Sheet1").Cells(i, j) Sheets("Sheet2").Cells(i, j).Font.Color = RGB(0, 0, 255) End If Next Next End Sub ------------------------------------------
青文字をRGBで表すと、何ですか? 例えば、RGB(0,102,255) RGB(0,0,255) どちらも青文字です。
青文字がある単一セルが選択された状態で、 右クリックをして、 メニューの中の「セルの書式設定」 →「フォント」tab →色をプルダウンして、「その他の色」 →ユーザー設定にて →赤、緑、青の値を教えてください。 ----------------------------------------
(pooh) 2017/01/24(火) 14:19
Sub test() Dim wk1 As Worksheet Dim wk2 As Worksheet Dim R As Range Dim cSt As String Dim iR As Long
Set wk1 = Sheets("Sheet1") Set wk2 = Sheets("Sheet2") wk2.Cells.ClearContents
With Application.FindFormat .Clear .Font.Color = RGB(0, 112, 192) End With Set R = wk1.Cells.Find(What:="*", SearchFormat:=True) If Not R Is Nothing Then While cSt <> R.Address If cSt = "" Then cSt = R.Address End If iR = iR + 1 wk2.Cells(iR, "A").Value = R.Value Set R = wk1.Cells.Find(What:="*", SearchFormat:=True, After:=R) Wend End If End Sub (???) 2017/01/24(火) 14:34
皆様のマクロも試してみますので、もう少々お待ちください(>人<;)
出力ですが、出来れば新しいシート(シート2)のA列に並べたいです。
もし元と同じセルに出力するなら、セルがとびとびになるので、
その場合は空白セルを消したいです。。。
ごめんなさい、ややこしくて、、、
(けい) 2017/01/24(火) 14:36
すみませんが回答ではありません。2番目の回答者はなぜコメント欄から書いていないのでしょうか? (bi) 2017/01/24(火) 14:37
皆さん指摘の通り 青 といっても、いろんな青があります。 処理方式としては ??? さんの 書式検索 が一番効率がいいと思いますが、 各セルをチェックしていく方式の一例です。
該当のセルはとりあえずメッセージで表示しています。 ★のところは、実際の値に直してください。
Sub Sample() Dim c As Range Dim r As Range Dim fColor As Long
fColor = RGB(0, 112, 192) '★
For Each c In Columns("A:L").SpecialCells(xlCellTypeConstants) If c.Font.Color = fColor Then If r Is Nothing Then Set r = c Else Set r = Union(r, c) End If End If Next
If r Is Nothing Then MsgBox "指定の文字色のセルはありません" Else MsgBox "以下のセルです" & vbLf & r.Address(False, False) End If
End Sub
(β) 2017/01/24(火) 14:49
既にエキスパートの方から回答あるし、いい方法ではなさそうだけど
Sub test()
Dim r As Range Dim a As Long
a = 1 For Each r In Sheets("Sheet1").UsedRange If r.Font.Color = RGB(0, 112, 192) Then Sheets("Sheet2").Cells(a, 1).Value = r.Value a = a + 1 End If Next
End Sub (bi) 2017/01/24(火) 14:59
アドバイス頂いたみなさま、どうもありがとうございます!
大変助かりました!
(けい) 2017/01/24(火) 16:59
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.