お世話になります。
環境は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も見ています
-
とっておきの「夜食」教えて下さい
真夜中に小腹がすいたときにこっそり作るメニュー、こっそり家を抜け出して食べに行くお店… 人には言えない、けど自慢したい、そんなあなたの「とっておきの夜食」を教えて下さい。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
VBAでセル同士を比較して色付け
Visual Basic(VBA)
-
Excelファイルを比較し、差分箇所に色をつけるには?
Visual Basic(VBA)
-
更新前と更新後の差分をVBAを使って抜き出したい
Excel(エクセル)
-
-
4
VBAで列の比較をする
Visual Basic(VBA)
-
5
【マクロ】列比較し色塗りしていく
Visual Basic(VBA)
-
6
Excel VBAで比較して数値があってなかったらセルの色を変換
Visual Basic(VBA)
-
7
マクロで文書比較
Visual Basic(VBA)
-
8
【マクロ】【VBA】条件付き書式で他のセルの書式変更のやり方
Excel(エクセル)
-
9
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで行の高さ及び列幅の...
-
Excel2017 フィルタ昇順並びがA...
-
エクセル VBA 行間隔を飛ばした...
-
基準日以前のデータを範囲を指...
-
Excelで並び替え後にア行...
-
時間の重複チェック
-
オートフィルタ後のデータから...
-
急ぎ!色のついたセルを非表示...
-
エクセル関数について
-
Excel 最小二乗法 二次関数
-
エクセル関数について
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
EXCELで日付を比べ3か月以内の...
-
検索条件に合うセルの個数を数...
-
文字列を比較し、相違するフォ...
-
Excel VBAでセルのクリアが出来...
-
行の一番右のデータセルと同じ...
-
プルダウンに【なし、平均、デ...
-
【Excel】数式の参照範囲を可変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
Excelで並び替え後にア行...
-
オートフィルタ後のデータから...
-
エクセルで行の高さ及び列幅の...
-
急ぎ!色のついたセルを非表示...
-
基準日以前のデータを範囲を指...
-
エクセルの時刻のカウントが出...
-
EXCELで日付を比べ3か月以内の...
-
【Excel VBA】指定した行の最大...
-
エクセル関数について
-
EXCEL 最終行のデータを他のセ...
-
文字列を比較し、相違するフォ...
-
プルダウンに【なし、平均、デ...
-
エクセル VBA 行間隔を飛ばした...
-
VBA 複数行の検索及び抽出
-
マクロで行の高さを設定したい
-
特定の行を選択して別のシート...
-
エクセル 複数行ある同一商品...
-
Excel 最小二乗法 二次関数
-
複数回答のクロス集計の方法
おすすめ情報