![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
お世話になります。
環境はWinXPエクセル2003、初心者です。
A列とB列に入っている文字情報を比較して、B列の異なる部分のみフォント色を変えるという設定は、
1.条件付き書式の数式(関数)で可能ですか?
2.もしくは、数式(関数)でC列に異なる部分を抽出できますか?
マクロでないと無理という事でしたら、
A列の任意のセルを選択した状態から開始して連続してデータが入っているところまでを範囲としたいです。
過去の質問を検索したところ、
VBAでA1のセルとA2のセル比較で、A2のフォント色が赤くなるという回答は発見出来ました。
http://okwave.jp/qa4040787.html
よろしくお願いします。
A 回答 (9件)
- 最新から表示
- 回答順に表示
No.9
- 回答日時:
>空白の代わりに、特定の文字を使って判別することは可能なのでしょうか?
>例えば、『課』という文字でいかがでしょうか?
Split関数を勉強して試してみてください。
思ったように出来ない場合、テストに使ったサンプルデータと、コードを提示し、不具合内容を教えてください。
Split関数で文字列を区切る
http://officetanaka.net/excel/vba/tips/tips62.htm
No.8
- 回答日時:
>回答番号:No.8 この回答への補足
部、課、グループ等の名称は、必ずスペースで区切られていると考えていいのでしょうか?
スペース1個で区切られていると好都合なのですが、サンプルでひとつだけスペースが2個並んでいるのがありました。
これは記入ミスでしょうか?
信頼性保証本部 信頼性保証グループ グループリーダー
~~ ~
とりあえず下記のようなマクロを組んでみました。
B列の文字列から、部、課などの各名称を取り出し、名称ごとにA列に存在するかどうかを判定しています。
名称が存在しない場合、名称全体の文字色を赤に変更するようにしています。
各名称で、異なる部分を判定し、その文字色を変えるのは、私のレベルでは難しいです。
そんなことが出来るかどうか分かりませんが、取り組んでみたいと思います。
Sub test1()
Dim c As Range
'Dim db1 As Variant
Dim db2 As Variant
Dim i As Integer
Dim j As Integer
For Each c In Range("A1:A10")
j = 1
'db1 = Split(Replace(c.Value, " ", " "), " ")
db2 = Split(Replace(c.Offset(, 1).Value, " ", " "), " ")
For i = 0 To UBound(db2)
If InStr(c.Value, db2(i)) = 0 Then
With c.Offset(, 1)
.Characters(j, Len(db2(i))).Font.ColorIndex = 3
End With
End If
j = j + Len(db2(i)) + 1
Next i
Next c
End Sub
ありがとうございます。
素晴しいです!
スペースは1文字分だけとは限りませんが、事前に<検索と置換>を実施することで統一させる事が出来ると思います。
これで充分に解決でございます。
いつか同様の事で悩む方がいらっしゃるかもしれないと思い、あえて追加の質問をさせていただきます。
もし宜しければお付き合いください。
空白の代わりに、特定の文字を使って判別することは可能なのでしょうか?
例えば、『課』という文字でいかがでしょうか?
その他の文字はこちらでアレンジを試みてみます。よろしくお願いします。
No.7
- 回答日時:
返事をいただき、ありがとうございます。
検証テストのため、5件ぐらい、サンプルデータを提示して頂けないでしょうか。
出来るだけ、実情に近い形が望ましいです。都合の悪い部分は、他の文字に置き換えて提示してください。
キーワードとなる文字(部、課、チーム、グループ)は省略しないでください。
余談になりますが、慌てて閉じる必要は全くないと思います。
ただ、wakamotoさんの負担になるようなら、未解決で閉じられても結構だとは思います。
本スレッドに関わった者として、なしのつぶて、という状況が最もストレスが溜まります。
この回答への補足
ありがとうございます。
5つほど架空のサンプルを考えてみました。
本当は会社名も含めてのもっと長い文字列になります。
主にマイナーチェンジが多いのは事業所名、部署名や役職名の部分で、件数が多いと見比べるのも疲れるので、少しでも楽が出来たらと思いました。
しかし、異なる部分に色付けといっても、10文字目に出てきていた文字が12文字目に出てくる場合はどのように判別するか?など、判定の仕方を定義することそのものが至難のワザであり、無理な注文であったと今では思っているのですが、いかがでしょうか?
<サンプル>
AA技術開発グループ 主任技師
AA環境技術グループ 主任技師
商品開発部 プロダクトグループ 臨床検査技師/臨床工学技士
商品開発部 プロダクトグループ 副主任研究員
東京本社 品質保証部 品質保証課 部長
大阪事業所 品質保証部 品質保証課 部長
信頼性保証本部 信頼性保証グループ グループリーダー
品質管理センター 信頼性保証部 グループリーダー
開発室 第3ブロック 研究員
開発室 第1室Aブロック 研究員
大阪本社 FFグループ GGチーム 主任
FF事業部 大阪事業所 GGグループ 主任
No.6
- 回答日時:
こんにちは。
>A列の任意のセルを選択した状態から開始して連続してデータが入っているところまでを範囲としたいです。
=MID(B4,1,MATCH(TRUE,INDEX(MID(A4,COLUMN(A4:T4),1)<>MID(B4,COLUMN(A4:T4),1),,),0)-1)
あいうえお あいうかえお
C列:
あいう
なお、#1の補足
>以下のように文字列が入っていた場合に、B1の「か」の部分が色が変わるとか、C列に「か」だけ抽出したいのです。
> A1:あいうえお
> B1:あいうかえお
「か」だけを出す論理が分かりませんでしたが、こういうことでしょうか。
=MID(B1,MATCH(FALSE,INDEX(MID(A1,COLUMN(A1:T1),1)=MID(B1,COLUMN(A1:T1),1),,),0),1)
A1:T1の範囲は、20文字まで、ということです。
マクロやVBAに関しては、もう少しきちんとした説明が必要です。
お返事が遅くなり大変申し訳ありません。
MID関数での解決法を理解する事が出来なかったのですが、どうも今回の目的の用途には合わないようです。
ひとえに当方の問いが不味かったのだと思います。
未熟な質問に時間をさいていただき、本当にありがとうございました。
No.5
- 回答日時:
>回答番号:No.2 この回答へのお礼
A列もフォント色が変わりますがそれでもいいのですか?
同じ文字が重複している場合も考慮されていませんがいいのでしょうか?
>A:あいうえお B:あいううえお=「- - -う- -」
B列で「う」が2回出現しています。
A列に「う」があるにも係わらず2個目の「う」が赤になります。
アルファベットの場合も英文字という理由ではなく文字が重複しているからです。
ありがとうございます。
>A列に「う」があるにも係わらず2個目の「う」が赤になります。
これは寧ろ、こうなって欲しかった結果です。
>A列もフォント色が変わりますがそれでもいいのですか?
はい。それでも良いです。
前提条件を完璧に考えるのが難しかったので、ある程度の結果が出れば、最後は手動で調整しようと思っていました。
会社名から部署名までの長い文字情報が1つのセルに入っていて、
○○グループ○○チームというように文字列「○○」の重複もありえます。
Aが古い情報、Bが新しい情報。一見似た文字列の間違い探しという用途でした。全件目視でチェックする必要のある事に変わりありませんが、手を動かす回数を減らせられれば助かると思いました。
明日、実際のデータで検証してみるつもりです。
No.4
- 回答日時:
マクロでなくとも条件付き書式を使えばよいでしょう。
B列を選択して「書式」メニューから「条件付き書式」を選択します。
「数式が」にして右の窓には次の式を入力します。
=COUNTIF(A:A,B1)=0
おなじ画面の「書式」をクリックして「フォント」タブの「色」から例えば赤色などを選択してOKすればよいでしょう。
なお、C列に取り出したい場合にはC1セルに次の式を入力して下方にオートフィルドラッグします。
=IF(B1="","",IF(COUNTIF(A:A,B1)=0,B1,""))
No.3
- 回答日時:
A列の文字は、必ずB列に含まれているということなら
Sub test2()
Dim c As Range
Dim n As Integer
Dim i As Integer
For Each c In Range("B1:B10")
For i = 1 To Len(c.Value)
n = InStr(c.Offset(, -1).Value, Mid(c.Value, i, 1))
If n = 0 Then
c.Characters(Start:=i, Length:=1).Font.ColorIndex = 3
End If
Next i
Next
End Sub
ご丁寧にありがとうございます。
今回の用途には当てはまりませんが、これもとても便利そうですね。
使う時があるかもしれないで大事に控えておきます。
No.2
- 回答日時:
一般機能では無理だとおもいます。
下記マクロを試してください。
セル範囲は実際に合わせて書き直してください。
Sub test1()
Dim c As Range
Dim n As Integer
Dim i As Integer
For Each c In Range("A1:A10")
c.Resize(, 2).Font.ColorIndex = 3
For i = 1 To Len(c.Value)
n = InStr(c.Offset(, 1).Value, Mid(c.Value, i, 1))
If n <> 0 Then
c.Characters(Start:=i, Length:=1).Font.ColorIndex = 1
c.Offset(, 1).Characters(Start:=n, Length:=1).Font.ColorIndex = 1
End If
Next i
Next
End Sub
見事に、
A:あいうえお B:あいうかきく=「- - -かきく」
A:あいうえお B:かきくけこ =「かきくけこ」
A:あいうえお B:あいううえお=「- - -う- -」
と、異なる部分だけ赤いフォント色になりました(-は色の変わらなかったところ)。
値をアルファベットにしていたセルは不思議な結果になりましたが、
A:AGAAGGAGCUUU B:AGAACCAGCUUU=「- -AA-CAGC-UU」
比較したいのは日本語なので大丈夫そうです。
本当にありがとうございました。
No.1
- 回答日時:
1.条件付き書式の数式(関数)で可能ですか?
B列を選択して、条件付書式 数式が =A1<>B1 書式で ご希望の色を選択して
OKです。
2.もしくは、数式(関数)でC列に異なる部分を抽出できますか?
C列に =IF(A1=B1,"同じ","違います") と入れて下へコピィします。
この回答への補足
ありがとうございます。
説明が足りなくてすいません。A列とB列は異なっているのが前提なのです。
以下のように文字列が入っていた場合に、B1の「か」の部分が色が変わるとか、C列に「か」だけ抽出したいのです。
A1:あいうえお
B1:あいうかえお
すいませんがよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの日付から年末尾2桁と月を1月をA~Lに変換したい 3 2022/08/08 10:32
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) 条件付き書式の色付きセルのカウント方法について 2 2022/10/21 14:51
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Word(ワード) Wordの表中の文字を選択した時の白黒反転の違い 1 2023/04/25 12:13
このQ&Aを見た人はこんなQ&Aも見ています
-
今年はじめたいことは?
今年はこれをはじめたい!ということを教えてください!
-
何回やってもうまくいかないことは?
みなさんには、何回やってもうまくいかないことはありますか?
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
VBAでセル同士を比較して色付け
Visual Basic(VBA)
-
Excelファイルを比較し、差分箇所に色をつけるには?
Visual Basic(VBA)
-
更新前と更新後の差分をVBAを使って抜き出したい
Excel(エクセル)
-
-
4
VBAで列の比較をする
Visual Basic(VBA)
-
5
Excel VBAで比較して数値があってなかったらセルの色を変換
Visual Basic(VBA)
-
6
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
7
【マクロ】列比較し色塗りしていく
Visual Basic(VBA)
-
8
Excel VBA : 文字列の属性も含めて結合する方法
Excel(エクセル)
-
9
Excelで数式内の文字色を一部だけ変更したい
Excel(エクセル)
-
10
Excel 書式を関数で判断。
Excel(エクセル)
-
11
A列の文字列からB列の文字列を
Excel(エクセル)
-
12
エクセルで別シートにリスト化した文字列を含むセルを持つ行を削除する方法を教えてください。
Excel(エクセル)
-
13
特定の文字がある行以外を削除するマクロ
その他(Microsoft Office)
-
14
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
15
【マクロ】【VBA】条件付き書式で他のセルの書式変更のやり方
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
【Excel VBA】指定した行の最大...
-
エクセルで行の高さ及び列幅の...
-
基準日以前のデータを範囲を指...
-
EXCELで日付を比べ3か月以内の...
-
オートフィルタ後のデータから...
-
エクセルの時刻のカウントが出...
-
文字列を比較し、相違するフォ...
-
急ぎ!色のついたセルを非表示...
-
Excelで並び替え後にア行...
-
プルダウンに【なし、平均、デ...
-
Excelで任意の文字列を半角スペ...
-
エクセル関数について
-
エクセル 複数行ある同一商品...
-
Excelの数式について
-
エクセルで2つの郵便番号を比較...
-
excel / ピポッド 日数を出したい
-
Excel VBAでセルのクリアが出来...
-
エクセルで文字を含む式に、カ...
-
エクセルで円グラフに引き出し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
Excelで並び替え後にア行...
-
【Excel VBA】指定した行の最大...
-
急ぎ!色のついたセルを非表示...
-
文字列を比較し、相違するフォ...
-
基準日以前のデータを範囲を指...
-
オートフィルタ後のデータから...
-
エクセルの時刻のカウントが出...
-
マクロで行の高さを設定したい
-
EXCELで日付を比べ3か月以内の...
-
VBA 複数行の検索及び抽出
-
エクセル関数について
-
EXCEL 最終行のデータを他のセ...
-
excel / ピポッド 日数を出したい
-
エクセル 複数行ある同一商品...
-
プルダウンに【なし、平均、デ...
-
エクセル VBA 行間隔を飛ばした...
-
Excel 最小二乗法 二次関数
-
検索条件に合うセルの個数を数...
おすすめ情報