プロが教えるわが家の防犯対策術!

Excelの基本的な質問で大変申し訳ございませんが、
お分かりの方はぜひご教示宜しくお願い致します。m(_ _)m

添付の画像ファイルに質問内容を記載したのですが、

B2のセルにどういう数式を、もしくは条件付き書式を入れれば良いかお分かりの方は
ご教示宜しくお願い致します!m(_ _)m

「文字だけでなく書式も判別できる関数につい」の質問画像

A 回答 (9件)

大変失礼しました。


回答No8のコード及び添付画像を貼り間違えました。
正しくは以下のコード及び添付画像になります。

■VBAコード

Function 書式判定(a As Range, b As Range) As Variant
Dim para(2, 8) As Variant
Dim tar(2) As Object

Set tar(0) = a
Set tar(1) = b

書式判定 = True
If tar(0).Value <> tar(1).Value Then
書式判定 = False
Exit Function
End If

For i = 1 To Len(tar(0))
For j = 0 To 1
With tar(j).Characters(Start:=i, Length:=1).Font
para(j, 0) = .Color '文字色
para(j, 1) = .Size '大きさ
para(j, 2) = .Italic '斜体
para(j, 3) = .Bold '太字
para(j, 4) = .Strikethrough '取り消し線
para(j, 5) = .Subscript '下付き
para(j, 6) = .Superscript '上付き
para(j, 7) = .Underline '下線
End With
Next j
For j = 0 To UBound(para, 2)
If para(0, j) <> para(1, j) Then
書式判定 = False
Exit Function
End If
Next j
Next i
End Function
「文字だけでなく書式も判別できる関数につい」の回答画像9
    • good
    • 0
この回答へのお礼

ご丁寧にVBAコードまで書いてくださりありがとうございました!大変助かりました!

お礼日時:2014/05/18 13:09

追記です。



質問内容ではB列に指示事項を記載してC列に表示とありますが
規範のA列と比較する対象のセルが不明です。

以下のコードでは比較対象の文字列をB列に入力するものとしています。

「書式もふくめて~」とありましたので値が一致しない場合に「err」
ではなく、一致していなければFalseを返すようにしています。

また以下のコードでは書式の判定対象を増やしていますが
文字に対する書式であり、セルに対する書式の判定は行っていません。
(セルの背景色や網掛けパターン、罫線の有無、種類等)


■VBAコード

Function 書式判定(a As Range, b As Range) As Variant
Dim para(2, 8) As Variant
Dim tar(2) As Object

Set tar(0) = a
Set tar(1) = b

書式判定 = True
If tar(0).Value <> tar(1).Value Then
書式判定 = "err"
Exit Function
End If

For i = 1 To Len(tar(0))
For j = 0 To 1
With tar(j).Characters(Start:=i, Length:=1).Font
para(j, 0) = .Color '文字色
para(j, 1) = .Size '大きさ
para(j, 2) = .Italic '斜体
para(j, 3) = .Bold '太字
para(j, 4) = .Strikethrough '取り消し線
para(j, 5) = .Subscript '下付き
para(j, 6) = .Superscript '上付き
para(j, 7) = .Underline '下線
End With
Next j
For j = 0 To UBound(para, 2)
If para(0, j) <> para(1, j) Then
書式判定 = False
Exit Function
End If
Next j
Next i
End Function
「文字だけでなく書式も判別できる関数につい」の回答画像8
    • good
    • 0

回答No.5でmshr1962さんもおっしゃっていますが、


ユーザー定義関数をVBAで作成してみました。

http://officetanaka.net/excel/vba/beginner/10.htm
上記を参考に以下のVBAコードを標準モジュール内に貼り付けてください。

C2セルに「=書式判定(A2,B2)」を入れると
大きさまたは色が違えば「False」、値が違えば「err」、それ以外なら「True」が表示されます。


■以下VBAコード

Function 書式判定(a As Range, b As Range) As Variant
Dim para(2, 2) As Variant
Dim tar(2) As Object

Set tar(0) = a
Set tar(1) = b

書式判定 = True
If tar(0).Value <> tar(1).Value Then
書式判定 = "err"
Exit Function
End If

For i = 1 To Len(tar(0))
For j = 0 To 1
para(j, 0) = tar(j).Characters(Start:=i, Length:=1).Font.ColorIndex
para(j, 1) = tar(j).Characters(Start:=i, Length:=1).Font.Size
Next j
For j = 0 To UBound(para, 2)
If para(0, j) <> para(1, j) Then
書式判定 = False
Exit For
End If
Next j
Next i
End Function
「文字だけでなく書式も判別できる関数につい」の回答画像7
    • good
    • 0

>やはり文字の色など書式の判別は関数では難しいのですかね・・・


他の回答者からCELL関数の提言がありましたが、文字の色や文字の大きさ、背景の色等は対象外です。
CELL("format",A1)については値の表示形式であってセルの書式全般ではありません。
CELL関数の検査の種類("format"等)には他にも検査の種類がありますが、あなたの目的には合わないと思います。
詳しくはCELL関数のヘルプで確認してください。
また、表示形式を変更しても自動再計算では反映されず、手動で再計算を行わないと判定結果が変わらない場合もあります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!関数では実現できないことが分かっただけでもかなり助かりました、ありがとうござました。m(_ _)m

お礼日時:2014/05/18 13:10

>文字の色など書式の判別は関数では難しいのでしょうか


VBAを利用したユーザー定義関数なら可能ですが。。。

・文字色の色番号を取得する関数
http://veaba.keemoosoft.com/2013/02/550/
    • good
    • 0
この回答へのお礼

やはりVBAが必要なのですね。ご回答ありがとうございましたm(_ _)m

お礼日時:2014/05/18 13:11

=AND(CELL("format",A1)=CELL("format",B1),EXACT(A1,B1))




CELL("format",A1)=CELL("format",B1)で書式のチェック
EXACT(A1,B1)でアルファベットの大文字と小文字の比較も含めた一致・不一致
この二つをANDで比較すれば出来ます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。かなり解決に近づいたと思いましたが、こちらの式でも文字の色や大きさなどを判別して正しい結果を出すことが出来ませんでした・・・やはり文字の色など書式の判別は関数では難しいのでしょうか・・・

お礼日時:2014/05/12 11:16

回答No.1と基本的には同じですがC2へ入力する数式は次の通りで良いと思います。


=A2=B2
IF関数は不要です。
上記の数式だけでA2=B2のときTRUEが返り、A2<>B2のときFALEが返ります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。やはり文字の色など書式の判別は関数では難しいのですかね・・・いずれにせよありがとうございました。m(_ _)m

お礼日時:2014/05/12 11:14

セルの書式を比較するならCELL関数なんですけど、書式の何を比較するかで引数が変わってきます。

    • good
    • 0
この回答へのお礼

ありがとうございます、CELL関数なんてあるのですね!文字の色や大きさなどすべての書式を比較したいのですが、この条件を満たす引数の指定の仕方はございますでしょうか?

お礼日時:2014/05/12 11:14

こんばんは!



関数によって書式の判断はできないはずです。
C2セルに「TRUE」か「FALSE」を表示させたい!というコトですので、
数式はC2セルにいれます。

C2セルに
=IF(A2=B2,TRUE)
としてみてください。

※ B2セルに入力がない場合何も表示させたくないのであれば
=IF(B2="","",IF(A2=B2,TRUE))
といった感じにしてみてはどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。やはり文字の色など書式の判別は関数では難しいのですかね・・・いずれにせよありがとうございました。m(_ _)m

お礼日時:2014/05/12 11:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています