関数 複数セルの一致・一部空白でも一致とみなす場合

このQ&Aのポイント
  • 関数 複数セルの一致・一部空白でも一致とみなす場合について解説します。
  • Aが入力されている場合、Aが基準値となり、B~Iを判断します。基準値が無い場合等も複雑ですが、下記のように処理します。
  • J列に表示させるための関数式について説明します。
回答を見る
  • ベストアンサー

関数 複数セルの一致・一部空白でも一致とみなす場合

昨日も質問させていただいたものです。 たびたび申し訳ありません。 昨日の質問は http://okwave.jp/qa4056081.html で、解決したかと思いきや、新たな条件が付きました。 Aが入力されている場合、Aが基準値となり、 その値と一致するかB~Iを判断します。 しかし、基準値が無い場合等も複雑ですが、下記のようになります。 A(本社)に対して、B~E(X地域店舗)、F~I(Y地域店舗)というような分かれ方をしています。 A B C D E F G H I  J 5 5 5 5 5 5 5 5 5 =TRUE(全社合致) 5 4 4 5 5 5 5 5 5 =FALSE(全社導入・値違い) 5 * * * * 5 5 5 5 =TRUE(X地域店舗なし) * 5 5 5 5 * * * * =TRUE(X地域店舗のみ) * * * * * 5 5 5 5 =TRUE(Y地域店舗のみ) (*=空白) というようにJ列に表示させる為の関数式をお教えください。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

=OR(INDEX(A1=B1:I1,),A1="")*COUNT(1/FREQUENCY(B1:I1,B1:I1))=1

makiokenko
質問者

お礼

ありがとうございます。 早速試してみます!!

makiokenko
質問者

補足

何度も何度も試行錯誤しながら、皆さんに教えていただきながら、ようやくデータが完成しました! maron--5さんに教えていただいた関数が、エラーも無く完璧でした。 本当にありがとうございました!!

関連するQ&A

  • 複数のセル内データが一致しているかをチェックする関数を教えてください。

    こんにちは。 急ぎの仕事なのですが、関数がさっぱりわからず困っています。 お分かりの方、どうか助けてください!!   A   B C D E F G   5    4 5 5 5 4 5 Aの値、5に対して、B~Gが一致しているかを確認したいのですが どのような関数がありますか? また、同じように、 E    F G H I J K 3    3 3 3 3 3 3 ・・・ と、続きがあります。 ひとつの商品に対して、複数店舗が取り扱っており 現段階では、仕入先(文字列)、原価、売価、発注単位、横に長いデータです。(空白有り・空白は一致とみなす) 最終的にはこの横列が全て一致するものは、消去します。 本を開いて頑張ってみましたが、埒が明かないので、 どうぞ宜しくお願いいたします。 説明不足な点が有りましたらご指摘ください。

  • 複数の関数からなる関数

    教えてください。 化学系卒なので数学の知識は深くありません。 [A]と[B]からなる[C]という要素があったとします。 [A]は、[A]を構成する「x」により、A=f(x)で表されるとします。 同じく [B]も、[B]を構成する「y」により、B=g(y)で表されるとします。 さて、ここで[C]ですが [C]は[A]と[B]より表現できる(はず)ので、 「C=h(f(x),g(y))」の形で表したいのですが、やり方、手順等々がわかりません。 C=h(f(x),g(y)) と抽象的?に書くのではなくて、 具体的中身のある関数形で表現できるようにしたいです。 f(x)とg(y)が互いに独立であれば、【 C=a*f(x)+b*g(y)+c 】でよいかと思いますが 「a」と「b」の数値の出し方がわかりません。 [a*f(x)]*[b*g(y)]や、[a*f(x)]^[b*g(y)],[a*f(x)]*e^[b*g(y)]だったりすると もうお手上げ状態です。 これら複数の関数がどう位置づけられるか、 このようなことを得意とするツールがあればご教授ください。 (フリーであればなお助かります。) また、上記のf(x)やg(x)を出すのに、エクセルの近似式を使っていますが 限界を感じています。 カーブフィッティングや近似式を計算してくれるツール等があれば 併せてご教授くださいますようお願いいたします。 以上、よろしくお願いいたします。3

  • 2次関数の問題です。

    A~J までは 0から(9)までの数字か,-符号が入ります。 ---------------------------------------------------- x の2次関数 y = a x^2 + bx + c (i)  を考える。 関数 (i) のグラフは (-1, -1) ,(2, 2) を通るものとする。 (1) b,c を a の式で表すと  b = [A] - a, c = [B C] a となる。 (2)関数 (i)のグラフと x 軸の交点のうち 1つは,0 < x =< 1 の範囲内にあるとする,このとき a の値の範囲は,               [D] < a = < [E] / [F] (ii) である。 (3) a の値が (ii) の範囲内を変化するとき, a + b c の値の範囲は [GH] / [I] =< a + bc =< [J] である。   ------------------------------------------------------------------------------- (1) (-1, -1), (2, 2)を通ることから a - b + c = -1 4a + 2b + c = 2 これを解くと,b = 1 - a , c = -2a がでます。 (2) y = f(x) とおいて,    f(0)×f(1) < 0 などと考えてみたのですが,うまくいきません。 (3) は (2)の範囲で, a+ bc = a + (1 - a)(-2a) の値の範囲を求めれば良いのではないかと思っています。 ------------------------------------------------------------------ 教えてください。

  • VLOOKUP関数で検索値と一致項目を取得できません

    VLOOKUP関数で検索値と一致項目を取得できません 下記のような表があるとき、 =VLOOKUP(K1,A2:B4,2,TRUE)と記述し『CCC』を取得したいのですが、 『BBB』を取得してしまいます。  |A |B |C |D |E |F |G |H |I |J |K 1|0.6|0.6|0.6|0.6|0.6|0.6|0.6|0.6|0.6|0.6|=SUM(A1:J1) 2| 4|AAA 3| 5|BBB 4| 6|CCC 一致しない場合は、近似値を取得したいため、検索方法をTRUEにしています。 EXCEL2007を使用しています。 K1の値を数値で『6』と入力した場合や、『=0.6*10』など記入した場合は、『CCC』が取得できます。 また、A1~J1を0.5にした場合は『BBB』が取得できるので、関数自体は正しいと思うのですが、原因がわかりません。 現在のところ、=ROUND(SUM(A1:J1),2)としてごまかしているのですが、 原因がわかりましたら、教えていただけますでしょうか?

  • エクセルVBAで不一致に空白セルを挿入

    エクセル2010です。 A、B列ともソートされています。 ごく少数ですが同一列内に重複するデータもあります。 そして A列に、1行目からA、B、C、E、F、F、H B列に、1行目からA、B、D、E、F、G、I (カンマは実際にはありません。) というような文字列データがある場合 別シートに A列に、1行目からA、B、C、空、E、F、F、空、H、空、 B列に、1行目からA、B、空、D、E、F、空、G、空、I、 (空は空白セルの意味です。) というように、お互いが一致しない場合は空白で飛ばし、一致するものは同じ行にするにはどのような方法がよろしいでしょうか? 例のように少ないデータなら目で見て手作業でできますが、実際は千件以上のデータです。 VBAでも関数でも結構です。よろしくお願いします。

  • ワークシート関数で複数のセル範囲の空白を調べたい

    ワークシート関数でセル範囲、B1:B5,D1:D4,F1:F3,H1:J1 が空白でない場合にTRUEを返すため =COUNTA(B1:B5,D1:D4,F1:F3,H1:J1)=15 という数式を書きました。ただ、これはセルの個数が15であることがわかっていなければなりません。ならば、COUNTBLANKで空白セル数を求め、それが0であればよいと思うのですが、なぜか =COUNTBLANK(B1:B5,D1:D4,F1:F3,H1:J1) という複数のセル範囲指定は、COUNTBLANKでは使えないようです。 やむをえず、セル範囲を分けて =SUM(COUNTBLANK(B1:B5),COUNTBLANK(D1:D4),COUNTBLANK(F1:F3),COUNTBLANK(H1:J1))=0 として対応しましたが、これをもっと簡単にやる方法はないでしょうか?

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • 5×5行列、固有値、固有ベクトル

    5つの値を入力し、それぞれの相対比を求めて行列にして、固有値と固有ベクトルを求めたいのですが、分からないので教えて下さい。下のプログラムは固有値を求めるものです。これは過去の質問にあったプログラムを少し変えてみたのですが、値が出てこないのでどうすればうまく出てくるのか教えて下さい。それと、固有ベクトルを求めるプログラムも教えて下さい。宜しくお願いします。 #include <math.h> #include <stdlib.h> #include <stdio.h> int main(void) { int i, j, k, l; double max,theta,x,y,a[5][5],b[5]; printf("値1: "); scanf("%d",&b[0]); printf("値2: "); scanf("%d",&b[1]); printf("値3: "); scanf("%d",&b[2]); printf("値4: "); scanf("%d",&b[3]); printf("値5: "); scanf("%d",&b[4]); printf("行列\n"); for(j=0;j<5;j++){ for(k=0;k<5;k++){ a[j][k]=b[k]/b[j]; printf("%1.3f ",a[j][k]); } printf("\n"); } while(1){ max=0; for(i=0;i<5;i++){ for(j=0;j<5;j++){ if (i!=j && max<fabs(a[i][j])){ max=fabs(a[i][j]); k=i; l=j; } } } if (max<1.0e-6) break; theta=(a[k][k]!=a[l][l])? atan2(-2*a[k][l],a[k][k]-a[l][l])/2:M_PI/4; for(i=0;i<5;i++){ x=a[i][k]; y = a[i][l]; a[i][k] = cos(theta) * x - sin(theta)*y; a[i][l] = sin(theta) * x + cos(theta)*y; } for (j=0;j<5;j++){ x=a[k][j]; y=a[l][j]; a[k][j]=cos(theta)*x-sin(theta)*y; a[l][j]=sin(theta)*x+cos(theta)*y; } } printf("固有値\n"); for (i=0;i<5;i++){ printf("%1.3f\n",a[i][i]); } return 0; }

  • FORTRAN…これってどんなプログラムになりますか??

    DO 10 I=1,47 CALL SUB1 10 CONTINUE STOP END SUBROUTINE SUB1 DIMENSION B1(3),B2(3),C(3),L(3),P(3) CHARACTER*12 A READ(5,50) A,B1,B2 50 FORMAT(A12,3F8.1,3F7.1) X=1.0 DO 11 K=1,300 Y1=(-1.0) Y2=0.0 DO 12 J=1,3 L(J)=(-NINT(B1(J)*10.0/B2(J))) Y1=Y1+X**L(J) Y2=Y2+L(J)*X**(L(J)-1) 12 CONTINUE W=X-Y1/Y2 IF(ABS(W-X).LT.1E-10) GO TO 13 X=W 11 CONTINUE 13 WO=W DO 14 J=1,3 C(J)=WO**L(J) 14 CONTINUE R1=0.0 DO 15 J=1,3 R2=R1+B2(J) R1=R2 15 CONTINUE D=0.0 DO 16 J=1,3 P(J)=B2(J)/R1 D=D+P(J)*ALOG(P(J)/C(J)) 16 CONTINUE E=0.0 DO 17 J=1,3 E=E+(B1(J)/B2(J)*P(J)) 17 CONTINUE WRITE(*,200) A,B2,P,E,D 200 FORMAT(1H,2X,A12,3X,3(F7.1,2X),4X,3(F9.6,X),4X,F9.6,2X,F9.6) RETURN END

  • MATLABによるラグランジェ補間

    下記1~2行目の8点が与えられていて、ラグランジェ補間を行う問題です。 下記のプログラムを自分で組んだものの、おかしな値が返ってきます。 どこが間違っているのか全く検討がつかないのでわかる方がいらっしゃったらどうかご教授お願いします。 x=[0,1.2,2.1,3.5,4.8,6.7,8.5,9.7]; y=[0.4,1.3,2.0,3.1,4.0,5.2,6.0,6.1]; x0=(0:0.001:15); h=0.0001; a=0; j=1; while a<=15 f(j)=0; for i=1:8 b=(lag(x(i)+h)-lag(x(i)))/h; f(j)=f(j)+lag(a)*y(i)/(b*(a-x(i))); end a=a+0.001; j=j+1; end plot(x0,f) [lag.m] function f=lag(x) g=1; z=[0,1.2,2.1,3.5,4.8,6.7,8.5,9.7]; for i=1:1:8 if x ~= z(i) g = g*(x-z(i)); end end f=g;

専門家に質問してみよう