No.5ベストアンサー
- 回答日時:
[Sheet1]
A B C D E ・・・ Z AA
1 01 05 06 ・・・ 09 TRUE
[Sheet2]
A B C D E ・・・ Z
1 01 01 01 02 ・・・
2 01 05 01 ・・・ 09
3 01 05 06 ・・・ 09
4 01 01 01 02 ・・・
の状態を想定します。
Sheet1のAA1にユーザー定義関数をセットします。式は、
AA1: =fn_HaniHikaku(A1:Z1,Sheet2!A1:Z4)
最初の解答とが違い、ユーザー定義関数で指定範囲全てを調べています。
第1引数と第2引数の列数は同じとしています。
第1引数は調べる元のセル範囲、第2引数は一覧のセル範囲。見つからなければFalseが表示されます。
下のユーザー定義関数は標準モジュールに貼り付けます。
Function fn_HaniHikaku(Rng1 As Range, Rng2 As Range)
Dim rg As Range '// セル
Dim rw As Long '// 行カウンタ
Dim col As Integer '// 列カウンタ
Dim judge As Boolean '// 判定
For rw = 1 To Rng2.Rows.Count
judge = True
For col = 1 To Rng2.Columns.Count
'// 行rwの各要素を比較する
If Rng1.Cells(1, col) <> Rng2.Cells(rw, col) Then
'// 一つでも違えば不一致
judge = False
Exit For
End If
Next
'// 1行でも全要素が一致すればいい
If judge = True Then
Exit For
End If
Next
'// 結果を返す
fn_HaniHikaku = judge
End Function
No.4
- 回答日時:
A B C D E ・・・ Z AA
1 01 05 06 ・・・ 09 TRUE
2 01 01 01 02 ・・・ 0
3 01 05 01 ・・・ 09 0
4 01 05 06 ・・・ 09 1
5 01 01 01 02 ・・・ 0
質問の意味を掴むのが一番難しいのですが・・・
上のようになった表で、1行目A列~Z列の内容が
2行目から5行目でA列~Z列と全て等しいなら『1』をAA列に書いてみます。
AA列の2行目以下でどこかに『1』があれば、一致する行があることになります。
力技で各セルをセル単位に照合すればできますが、ばかばかしいので、ユーザー定義関数を作ってみます。
AA2セルに =fn_HaniHikaku($A$1:$Z$1,A2:Z2) として、AA3以下はこれをコピーします。
(Z列まで使ったのは例です)
AA1セルに =IF(SUM(AA2:AA5)>0,TRUE,FALSE) とします。
質問の意味を捉えていればいいんですが・・・
質問に書いてあることをそのままコードに書いたつもりです。参考にして下さい。
Function fn_HaniHikaku(Rng1 As Range, Rng2 As Range)
Dim rg As Range '// セル
Dim col As Integer '// 列カウンタ
Dim judge As Integer '// 判定
judge = 1
For col = 1 To Rng1.Columns.Count
'// 各要素を比較する
If Rng1.Cells(1, col) <> Rng2.Cells(1, col) Then
'// 一つでも違えば不一致
judge = 0
Exit For
End If
Next
'// 結果を返す
fn_HaniHikaku = judge
End Function
この回答への補足
ありがとうございます。検索元のデータは別シートで
対象範囲のシートからマッチングして結果を返したいのですがコードはどのようにかえればよいのでしょうか?
No.3
- 回答日時:
出来ない(「複雑でいやになっちゃう」も含めて)と思います。
下記をご参考にしてください。(1)エクセル関数では、セルの、1つの文字列にしないと、それを対象にしてしか検索できない。
(2)セルの文字列の結合において「各列定幅(桁)性」を持たせないと比較ができない。A列「AB」B列「C」を結合して「ABC」、A列「A」B列「BC」も結合して「ABC」。両者が等しくなっては(一般的には)困るので、例えばA列は固定4桁、B列は固定3桁とか、合理的に各列の桁数を決めて結合しないといけない。AB・・C・・(・はスペースなど)後者ではA・・・BC・のように。
しかしフィールドが多くなるとそれを作る関数式が結構面倒である。
同じく「検索のために指定する値」もそのフィールド桁数ルールを守って入力しないといけない。結構神経を使う。
(3)空白列の存在に対処するのも(2)と似ていて
全行と決まっておれば、空白の場合は何桁かを決める必要がある。
(4)救いの手は、簡単なVBAを使い、ユーザー関数を作る
ことでしょう。
Function ketugou(a)
r = a.Row
l = Array(4, 3, 5, 3, 4)
sl = 0
For i = 0 To UBound(l)
sl = sl + l(i)
Next i
s = String(sl, "-")
'----
p = 1
For i = 0 To UBound(l)
Mid(s, p, Len(Cells(r, i + 1))) = Cells(r, i + 1)
p = p + l(i)
Next i
ketugou = s
End Function
例えば
A列 B列 C列 D列 E列
ab (空白)xyz (空白) ijk
cdf (空白)v (空白) jkll
43534
最下行の桁数で桁数幅を考えた時
F1に=ketugou(A1)と入れると
ab-----xyz-----ijk-
F2に=ketugou(A2)と入れると
cdf----v-------jkll
がセットされると言う風に。(スペースでは桁が判りにくいので、判りやすいように-にした)
(5)後はF1をF2セル以下複写すればF列に望みの
検索される方の文字列が出来る。
(6)ここを対象にしてVLOOKUP関数で検索する。
しかしVlookup関数の検索される列は最左列でないといけなかったと思うので、取りたい情報(例えば会社名)はF列より右にあるかF列をA列(列挿入した後のA列)にもってくる必要がある。
Match関数ならそのような心配はない。
No.2
- 回答日時:
スペースとは、半角又は全角の文字が入っているって事?
01△05△△06△09 は 「01 05 06 09」?
検索範囲のデータはそれぞれ別の列に入ってる?
A1に01、B1は全角1文字、C1は05、D1は全角1文字・・・・
それとも
A1に01、B1は空、C1は05、D1は空・・・・
とりあえずデータを結合してMatch関数やVLOOKUP関数を使えば良いのでは?
検索範囲の列を結合したデータを作る。
=A1&B1&C1&D1&E1
もし空白文字を含まない列を含むなら結合データ作成を工夫する。
=if(A1=""," ",A1) & if(B1=""," ",B1) & ......
そのうえで、検索データのセルとマッチさせる。
=Match(検索データ,検索範囲,FALSE)
No.1
- 回答日時:
ちょっと意味が掴み難いです。
何処と何処をどうマッチさせ、どんな結果を得たいのかサンプル値でも良いので実例を上げた方が良いのでは?
この回答への補足
わかりにくくてすみません。
このようなことがしたいのです。
検索データ:01△05△△06△09
==========================================
検索範囲:
01△01△01△02
01△05△△01△09
01△05△△06△09
01△01△01△02
.
.
.
=========================================
結果
データがマッチしからtrueやなければflase
を返す
excel関数でなんとかしたいです。
検索データにはスペースを含みます。
△はスペースです。
探索先(範囲)には検索したいデータは必ずあるのが前提ですがなれればエラーを返すようにしたいです(優先度は低いです)
また検索範囲内でデータ重複があります。
マッチして時点でtrueが返ればいいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) セルが空白だった時の処理 5 2022/09/01 07:07
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラム言語について。
-
C#とC++について。
-
CLispのloop内の挙動について
-
interface 2021年5月号 P46
-
VBA 電話番号の正規表現について
-
VBAでパワーシェルを実行したい...
-
vba クリップボードクリアにつ...
-
ImageMagickでgif画像の一部が...
-
Windowsのアプリ開発ってなんの...
-
プログラミングのPythonのnoteb...
-
pythonで複数画像からgifを作る...
-
ExcelVBAでFormulaR1C1を列範囲...
-
初心者powershellのPS1ファイル...
-
Google ColaboでGUI作成
-
小学1年生の子です。塾に行かせ...
-
そのまま使っただけなのに・・...
-
プログラマーと学歴の関係性に...
-
Pythonでgif画像が上手く作れない
-
windowsでテキストファイルの各...
-
プログラミング、アーキテクチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミング
-
小学1年生の子です。塾に行かせ...
-
vba クリップボードクリアにつ...
-
プログラマーと学歴の関係性に...
-
Webサイト内に埋め込んだmp4動...
-
正規表現で複数マッチ条件で悩...
-
windowsでテキストファイルの各...
-
楽しくて最高のプログラミング...
-
プログラミング ソースコード
-
Pythonって何を意識した言語な...
-
プログラミングを教えたいです...
-
pythonで複数画像からgifを作る...
-
pythonにてseleniumを使うも、...
-
Pythonでgif画像が上手く作れない
-
Google ColaboでGUI作成
-
テキストファイルのファイル名...
-
プログラミング、アーキテクチ...
-
そのまま使っただけなのに・・...
-
このURLで広告を出しているのは...
-
chatGPTで次々と質問をしていく...
おすすめ情報