No.3
- 回答日時:
こんにちは
図の一番左の数字はセルの行番号を示しているのでしょうか?
関数式の作者がどういう意図で式を作成したのかわかりませんが、「&」演算子は文字列の連結を意味します。また、演算子の優先順位が同等なら、式は左側から評価されます。
https://support.office.com/ja-jp/article/%E8%A8% …
=K398=K399&L398=L399
は、結果的に以下のように解釈されていると思います。
=(K398=(K399&L398))=L399
左側の( ( ))の評価は、値があれば大抵の場合はFalseになりますので、L399の値が空白やFalseだと計算結果はTrueに、それ以外はFalseになることが予想できます。
何をどうチェックしたいのかが良くわかりませんが、…
もしも論理積を取りたいのであれば、AND関数を用いてください。
(判定ロジックを再考なさった方が良さそうに思いますが…)
https://support.office.com/ja-jp/article/AND-関数-5f19b2e8-e1df-4408-897a-ce285a19e9d9
早速のコメントありがとうございます。
恐れ入りますが、補足を開いてもらえませんか。
なお、「何をどうチェックしたいのかが良くわかりませんが」とのことですが、L列にある間違いを発見するためです。
No.5
- 回答日時:
FalseとTrueを表示させているM列にはどのような数式が入っているのですか?
M398にはどのような式が入力されているのかを提示されないと、回答ができません。
=K398=K399&L398=L399 は、K398=K399 でかつ、L398=L399 ということでいいですね?
以下同じですね?
コメントありがとうございます。
M398の中身は、その右にある通り、=K398=K399・・・・です。
これは式ではないと、おっしゃるかもしれませんが。
また、補足を見ていただきませんでしょうか。
No.6
- 回答日時:
ANo3です
No3にも書きましたように、判定するための論理(ロジック)を再考なさるのが良くありませんか?
値の組み合わせや順序にどのような可能性があるのか回答者にはわかりませんが、例えば
東京 東
東京 東
東京 西
東京 西
東京 西
大阪 西
大阪 西
大阪 西
大阪 中
大阪 中
札幌 東
青森 北
岩手 南
のようなケースは存在し得るのか/しないのか、
また、ここに誤りは存在するのか/しないのか
などなどがわかりません。
それなので、『何をどうチェックしたいのかが良くわかりません』となりましたが、『L列にある間違いを発見するためです』との補足なので、わからないままです。
No.7
- 回答日時:
やはり、何をしたいのか見えませんね。
M398セルに
=COUNTIFS($K$398:$K$416,K398,$L$398:$L$416,L398)<COUNTIFS($K$398:$K$416,K398,$L$398:$L$416,"<>"&L398)
(間違っていても)多い方がFALSE。
No.8
- 回答日時:
>そこで、406~408行を追加した結果、M406とM407にも、TRUEが出てきます。
>このTURUはM400,M403のTURUとは性格が異なります。
回答:
まず、M403ですがこれはFALSEす。従って、M403に関しては、論外とします。
M400とは性格が異なるということですが、異なりません。
そもそも、TRUEが成立するのは、「Kの値が当該行と次の行が同じ、且つ、Lの値が当該行と次の行が同じ」という条件です。
M400もM406もM407もこの条件を満たしています。
No.9
- 回答日時:
No8です。
そもそも、「Kの値が当該行と次の行が同じ、且つ、Lの値が当該行と次の行が同じ」ものをTRUE
、以外をFALSEとして、FALSEが間違いであると判断すること自体に無理があると思います。
正しい要件は、「K列が同じものの中で、同じ属性(L列)が最も多いものを正常の属性とし、以外を間違いとする。」になります。
この要件をマクロであれば、簡単に実現することが可能です。
マクロでよければ提供可能ですがいかがでしょうか。
その場合の前提としては、
1)1行目は見出し行で、データは2行目から始まる。
2)M列に正常なら””(空白)、間違いなら、”×”を設定する。
となりますが、それで良いですか。(K列はソート済みであることが前提です)
「大半は正しいのに、ところどころに間違いあり」の説明が出来ませんでした。
言われる通り、「K列が同じものの中で、同じ属性(L列)が最も多いものを正常の属性とし、以外を間違いとする。」です。
「大半は正しい」のをどうやって判定するかが、分からず質問しました。
それで、言われるようにマクロを組んでいただければありがたいです。
No.10
- 回答日時:
No9です。
マクロでの実装です。
実行時の前提は、No8に記述された通りです。
以下のマクロを標準モジュールに登録してください。
-----------------------------------------------------------
Option Explicit
Public Sub エラー判定()
Dim dict1 As Object
Dim dict2 As Object
Dim row As Long
Dim maxrow As Long
Dim ctr As Long
Dim key1 As Variant
Dim key2 As Variant
Dim oldkey1 As Variant
Set dict1 = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set dict2 = CreateObject("Scripting.Dictionary") ' 連想配列の定義
maxrow = Cells(Rows.Count, "K").End(xlUp).row 'sheet1の最大行取得
oldkey1 = ""
For row = 2 To maxrow
key1 = Cells(row, "K").Value
'K列のキーブレク時
If oldkey1 <> key1 And oldkey1 <> "" Then
'最大の数をもつ属性を取得する
Call find_max_item(oldkey1, dict1, dict2)
dict2.RemoveAll
End If
key2 = Cells(row, "L").Value
If dict2.exists(key2) = True Then
dict2(key2) = dict2(key2) + 1
Else
dict2(key2) = 1
End If
oldkey1 = key1
Next
'最大の数をもつ属性を取得する
Call find_max_item(oldkey1, dict1, dict2)
'判定を設定する
ctr = 0
For row = 2 To maxrow
key1 = Cells(row, "K").Value
If Cells(row, "L") = dict1(key1) Then
Cells(row, "M").Value = "" '正常
Else
Cells(row, "M").Value = "×" '間違い
ctr = ctr + 1
End If
Next
MsgBox ("間違い件数=" & ctr & "件")
End Sub
'最大の数の属性を取得する
Private Sub find_max_item(ByVal key1 As Variant, ByVal dict1 As Object, ByVal dict2 As Object)
Dim key2 As Variant
Dim maxkey2 As Variant
Dim maxcount As Long
maxcount = 0
For Each key2 In dict2
If dict2(key2) > maxcount Then
maxkey2 = key2
maxcount = dict2(key2)
End If
Next
dict1(key1) = maxkey2
End Sub
----------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メッセージボックスのOKボタ...
-
エクセルで特定の列が0表示の場...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
一つのTeratermのマクロで複数...
-
【EXCEL VBA】オートシェイプを...
-
Excel マクロ VBA プロシー...
-
wordを起動した際に特定のペー...
-
Excel マクロでShearePoint先の...
-
ExcelのVBA。public変数の値が...
-
Excel VBAからAccessマクロを実...
-
エクセルに張り付けた写真のフ...
-
特定文字のある行の前に空白行...
-
ExcelVBAでPDFを閉じるソース
-
マクロで待機時間を作りたい
-
VC++ 2008 EXPRESS "_T"識別子...
-
EXCELマクロでのThisisWor...
-
Wordのマクロでクリップボード...
-
VBA アドインについて お詳しい...
-
エクセルマクロでワードの一ペ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
Excel マクロでShearePoint先の...
-
ExcelVBAでPDFを閉じるソース
-
特定文字のある行の前に空白行...
-
マクロ実行時、ユーザーフォー...
-
wordを起動した際に特定のペー...
-
エクセルで別のセルにあるふり...
-
ソース内の行末に\\
-
マクロで空白セルを詰めて別シ...
-
【EXCEL VBA】オートシェイプを...
-
エクセルのマクロをセルの値に...
おすすめ情報
&とANDの違い、分かりました。
そこで、406~408行を追加した結果、M406とM407にも、TRUEが出てきます。
このTURUはM400,M403のTURUとは性格が異なります。
データが増えてくると、どちらのTRUEかが分かりません。
区別して表示させる方法はありませんか?
なお、399行目以降はM398をコピーしたものです。