[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列の中の特定の文字だけ色を変えたい』(総務娘)
お世話になっております<(_ _)> 例えば「テキスト」という文字列の「テ」だけを赤にする、ということはできますか? 置換では「テキスト」全体が赤になってしまいました。 よろしくお願いします。エクセルは2003です。
こんにちは 地道に、テだけを選んで赤色にするのではダメなのでしょうか?(Aster)
Asterさん、ご回答ありがとうございます。 なにしろ、量がすごいもので(しかも、シート中にその文字があるのです) できれば一括で変更したいのです。 よろしくお願いします。
どれくらいの確度でできるかわからないが、Wordの機能を利用。 一箇所ずつ編集するよりは早いはず。 Office2002で200セルくらいの置換を検証した。 変換したい範囲をコピー、Word新規文書へ貼り付け。 Wordで目的のテキストの書式置換。 置換後のWordのテキストをExcelへ貼り付けなおす。 (みやほりん)
マクロで考えてみました
Sub TEST()
MyData = "テキスト" '検索文字
IroData = "テ" '色付け文字
Sa = InStr(1, MyData, IroData)
For Each Cel In Selection
Poji = InStr(1, Cel.Value, MyData)
If Poji > 0 Then
Cel.Characters(Poji + Sa - 1, Len(IroData)).Font.ColorIndex = 3
End If
Next
End Sub
(BB)
みやほりんさん ご回答ありがとうございます! なるほど・・・そんなテもありましたか! エクセルを追求していらっしゃるからこそのあわせ技、目からうろこでした。 試しにやってみましたが、うまくいきました(^O^) ありがとうございます。 面倒がらず、いろいろなところに目を向けるべきですね。新たな発見でした。 本当にありがとうございました<(_ _)>
BBさん ご回答ありがとうございます! す、素晴らしいです、一発でした。 マクロは、全然わからないのですが望んでいることがスパッと出来ました(*^_^*) とても助かりました!!
ちなみにSUBSTITUTE関数できるかな?と思ったのですが色の指定方法がわかりません。 もしかしたらできないのかもしれないんですが、もし方法をご存知の方いらっしゃいましたら、今後の勉強のため引き続き回答お願いします<(_ _)> 私の考えたところでは SUBSTITUTE(範囲,"検索文字列","置換文字列") 【例】A2の「テキスト」の「テ」を赤にする SUBSTITUTE(A2,"テ","テ"←ここに色の指定が出来たら・・・) (総務娘)
すみません<(_ _)>訂正です・・・ BBさんに作っていただいたマクロは、テスト用のシートでしかできませんでした。 すみません、「テキスト」というのは例えでして、実は 「テキスト」「テープ」「カルテ」「テニス」などシート内のいろんな文字列中から 「テ」に色をつけたいのです。 そうなると、最初の MyData = "テキスト" '検索文字 ここに、全部のセルの文字列をいれないといけなくなりますか? それとも、作っていただいたマクロでは不可能でしょうか? 説明不足でお手数をお掛けいたしまして申し訳ありませんが、よろしくお願いします。 (総務娘)
質問です。 特定の文字列中のテだけの色を変えたいのではなくて、 すべてのテの色を変えたいということですか?
とりあえず、特定の文字列複数バージョン
Sub TEST2()
Dim MyBoom() As String
MyDatas = "テキスト テープ カルテ テニス" 'ここに特定文字列をかいて下さい。
'文字列と文字列の間は、半角スペースです
MyBoom() = Split(MyDatas)
IroData = "テ"
For Each Cel In Selection
For i = 0 To UBound(MyBoom)
MyData = MyBoom(i)
Sa = InStr(1, MyData, IroData)
Poji = InStr(1, Cel.Value, MyData)
If Poji > 0 Then
Cel.Characters(Poji + Sa - 1, Len(IroData)).Font.ColorIndex = 3
End If
Next
Next
End Sub
(BB)
BBさん、たびたびありがとうございます! そうです、すべての「テ」の色を変えたいです! 最初からそう言えばよかったのですね、すみません、うまく言えなくて・・・m(_ _;m) 何度も恐れ入りますが、よろしくお願いします〜〜〜〜 (総務娘)
お邪魔します。ちょっと遅いけど。。
Option Explicit
Sub てすと()
Dim MyAreas As Areas
Dim MyArea As Range
Dim MyAry() As Variant
Dim z() As Variant
Dim MyCel As Range
Const MyStr As String = "テ"
Dim i As Long, j As Long
Dim n As Long, k As Long
With ActiveSheet
On Error Resume Next
Set MyAreas = .UsedRange.SpecialCells(xlCellTypeConstants).Areas
On Error GoTo 0
End With
If MyAreas Is Nothing Then Exit Sub
For Each MyArea In MyAreas
With MyArea
If .Count = 1 Then
ReDim MyAry(1 To 1, 1 To 1)
MyAry(1, 1) = .Value
Else
MyAry = .Value
End If
.Font.ColorIndex = 0
For i = 1 To UBound(MyAry, 1)
For j = 1 To UBound(MyAry, 2)
Set MyCel = .Item(i, j)
For n = 1 To Len(MyAry(i, j))
If Mid(MyAry(i, j), n, 1) = MyStr Then
ReDim Preserve z(k)
z(k) = n
k = k + 1
End If
Next
If k > 0 Then
For n = LBound(z) To UBound(z)
MyCel.Characters(z(n), 1).Font.ColorIndex = 3
Next
ReDim z(0 To 0)
k = 0
End If
Next
Next
End With
Next
Erase MyAry, z
Set MyCel = Nothing
Set MyAreas = Nothing
End Sub
(SoulMan)
すでに(SoulMan)さんが配列の高速バージョンを作成して くれてますね。 一応すべてのテの色を変える分も載せておきます。
Sub TEST3()
IroData = "テ"
For Each Cel In Selection
poji = InStr(1, Cel.Value, IroData)
Do Until poji = 0
If poji > 0 Then
Cel.Characters(poji, Len(IroData)).Font.ColorIndex = 3
poji = InStr(poji + 1, Cel.Value, IroData)
End If
Loop
Next
End Sub
(BB)
SoulManさん、ご回答ありがとうございます。 BBさん、何度も本当に感謝です(TдT) お礼が遅くなってしまって、申し訳ありません。 おかげさまで無事、見事に処理できるようになりました! こんなことができるなんて、本当に便利ですね。私も精進したいと思います!!!! また何かございましたら、よろしくお願いいたします<(_ _)> (総務娘)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.