- ベストアンサー
エクセルのfontcolorの抽出について
- エクセル中級、VB初心者向けの質問です。
- 現在、エクセルA列の各セルに入っている文字列の文字の色をB列に抽出するスクリプトを書いています。
- 単一の色だけでなく、一つのセルの中に異なる色の文字列がある場合にもうまく結果を反映させる方法について教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず。 セルの文字が単色構成なら 1回の出力。 多色構成なら文字ごとに出力 Dim rng As Range Dim i As Long For i = 1 To 2 Set rng = Cells(i, 1) If IsNull(rng.Font.ColorIndex) Then ' 多色構成 Dim j As Long For j = 1 To Len(rng.Value) Cells(i, j + 1).Value = rng.Characters(j, 1).Font.ColorIndex Next Else ' 単色構成 Cells(i, 2).Value = rng.Font.ColorIndex End If Next
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 Sub sample() Dim wk(256) For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To Len(Cells(i, 1).Value) idx = Cells(i, 1).Characters(j, 1).Font.ColorIndex If wk(idx) <> idx Then Cells(i, k + 2) = Cells(i, 1).Characters(j, 1).Font.ColorIndex wk(idx) = idx k = k + 1 End If Next Erase wk: k = 0 Next End Sub
お礼
temtecomai2様 ご回答いただき、ありがとうございます。 頂いたサンプルは大体やりたいなと思っていたのと近いです。 文字列の色に対して、重複分も含みまして、それぞれに出そうと思っております。 後述いたしますが、連続して同じ色が出てきた場合の仕様は固まっておりませんです。。
- temtecomai2
- ベストアンサー率61% (656/1071)
色抽出の仕様は固まっていますか? 同じ色が続いたのちに別の色が出てきた場合とか、再び同じ色が出てきた場合とか、どうするんですか? 黒黒黒黒 黒黒赤黒 黒赤黒黒 黒黒赤黒
補足
temtecomai2様 ご回答いただき、ありがとうございます。 そうなんです。 今回の件ですが、文字列内で同じ色が連続する場合もあるようで、規則性もないので、どうしたことか悩んでいます。
- end-u
- ベストアンサー率79% (496/625)
1文字ずつ見ていかなければならないというのは予測できますよね。 例えば文字列中の1文字だけ色を変える操作をマクロ記録してみてください。 すると、[Characters オブジェクト]に対して処理すれば良い、という凡その見当がつきます。
お礼
end-u様 ご回答頂き、ありがとうございます。 マクロの記録から記録されたスクリプトを参考にするのは全く考えておりませんでした。 ちょっと試してみようと思います。
お礼
temtecomai2様 ご回答いただき、ありがとうございます。 やりたいと思っていたことがまさにこれです。 頂いたものを参考にして、夕方までには仕上げようと思います。 ありがとうございました。