Excelの使い方で質問です。
フィルタをかけて以下のように並び替え(同一のC列の値内でD列の数値を昇順)を行ったのですが、
C   D
2 261.22
2 444.27
2 469.27
2.1 259.16
2.1 294.18
2.3 260.23
2.3 261.22
2.3 337.11
・    ・
・    ・
この状態でC列の値の差が±0.1でかつD列の値の差が±0.1であるという条件を満たす行のみをピックアップ(してできればグループごとに色分けも)する方法はありますでしょうか?

大変困っています。よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (10件)

こんにちわ。



>Excelの列が260列ほどしかないため
正確には256です。

>列と行を変換しない状態のままで、該当する行を色づけしたい。
ざっくり考えても数百万回検索する必要があるとおもうのですが・・・
そのままだとマクロしかないです。

たしか2000行程と書いてあったかとおもいますが、一度に全部チェックしなくても、分割してチェックすれば256列でもできると思うのですが?

いずれにしても、余りエクセルの関数向きではありませんね^^;
    • good
    • 0
この回答へのお礼

>一度に全部チェックしなくても、分割してチェックすれば256列でもできると思うのですが?

そうなんですが、その256列目付近のデータが分割した次のデータのグループに属する可能性が出てきたりしてややこしいので、やっぱり分割せずにそのままの状態で解析したいんですよね・・・

>ざっくり考えても数百万回検索する必要があるとおもうのですが・・・
そのままだとマクロしかないです。

>いずれにしても、余りエクセルの関数向きではありませんね^^;

なるほど、やはり難しいんですね(^^;色々と考えていただき、どうも有難うございました。

お礼日時:2009/05/18 11:54

何度も何度ももうしわけないですが、追加で・・・



ピボットテーブルの集計については、私の画像では合計をしようしていますが、それだとCとD両方が同じ値のデータが複数あるときに合計されてしまい、ほしい答えになりません。

フィールドの設定を「平均」、「最大」、「最小」のどれかにしてください。(今回の集計の場合はこの3個はどれも結果が同じになるはずなので、どれでもいいです。)
以上
    • good
    • 0
この回答へのお礼

okdeathさん、御親切な回答どうも有難うございます。

教えて頂いた方法で実行しようとしてみましたが、Excelの列が260列ほどしかないため、自分が処理しようとしているデータを全て並べることができませんでした。できれば列と行を変換しない状態のままで、該当する行を色づけしたいのですが、やっぱり難しいですよね。

いずれにせよ、御丁寧に回答して頂き、どうも有難うございました。

お礼日時:2009/05/16 12:43

すみません。

結果がおかしくなってました。
3度目の正直です。(ミスしててごめんね(TT))
数式を訂正してみました。

D4 : =IF(AND(E6-D6<=0.1,D6-C6<=0.1),11,IF(E6-D6<=0.1,1,IF(D6-C6<=0.1,10,0)))
B7 : =IF(AND(C8-C7<=0.1,C7-C6<=0.1),11,IF(C8-C7<=0.1,1,IF(C7-C6<=0.1,10,0)))
条件つき書式 : D7で「数式が」を選択し、=AND(D7>0,AND(D$4>0,$B7>0),OR(D$4=$B7,D$4=11,$B7=11))

で、下図のようになります。
こんどこそー><b
「Excelの複数の列の数値で差が範囲内で」の回答画像8
    • good
    • 0

ごめんなさいね。


画像では式が見えないようです。

D4 : =IF(OR(E6-D6<=0.1,D6-C6<=0.1),1,0)
B7 : =IF(OR(C8-C7<=0.1,C7-C6<=0.1),1,0)
条件つき書式 : D7で「数式が」を選択し、=AND(D7>0,AND(D$7,$B7))

です。
    • good
    • 0

こんにちわ。


回答を考えている間に他の人が答えているようですね。
まあ、私なりに回答します。
まずピボットテーブルで横にC列、縦にD列を入れ、データにD列を入れます。

C列とD列を昇順で並べ替えます。

ピボットテーブルをコピーし、値で貼り付けます。

下画像の「ダミーの数字を入力」のとおり、3箇所入力してください。
(999999は適当です。C又はD列の一番大きい数より大きい数字にしてください。)

下画像のIF文2箇所(D4とB7です。)を入力し、それぞれ横又は縦にデータのあるだけコピーペーストしてください。

D7のセルを選択し、書式→条件付書式を呼出し、画像のとおりの条件を入力してください。

D7をコピーし、対象データ全てを選択し、形式を選択し貼り付け(書式)をペーストしてください。

下画像のとおり、色がつきます。

こんな感じでどうでしょう?
「Excelの複数の列の数値で差が範囲内で」の回答画像6
    • good
    • 0

グループに別けるのは設問に無理がありますので、各行のE列以降に、条件に一致する行番号を表示するようなマクロを書いて見ました。


表がC1から始まる事にしてあります。
サンプルですので、変数宣言も結果を格納する配列だけですし、エラー処理も行って居ません。
ご参考までに

Sub sample()
 Dim chkGr() As Long
 lastRow = Range("C1").End(xlDown).Row
 For i = 1 To lastRow
  ReDim chkGr(0)
  colC = Range("C" & i)
  colD = Range("D" & i)
  count = 0
  For j = 1 To lastRow
   If (i <> j) * (Abs(colC - Range("C" & j)) < 0.1) * (Abs(colD - Range("D" & j)) < 0.1) Then
    ReDim Preserve chkGr(count)
    chkGr(count) = j
    count = count + 1
   End If
  Next j
  If count > 0 Then
   Range(Cells(i, 5), Cells(i, 4 + count)).Value = chkGr()
  End If
 Next i
End Sub
    • good
    • 0
この回答へのお礼

mt2008さん、ご回答有難うございます。

せっかく教えて頂いたのですが、あいにく当方エクセル初心者のため、レベルが高すぎます・・・(^^;

プログラミングなしで処理する方法などはないでしょうか?

いずれにせよ教えて頂きありがとうございました。

お礼日時:2009/05/16 12:51

》 大変困っています。

よろしくお願いいたします。

そういうことなら、「C列の値の差が±0.1でかつD列の値の差が±0.1であるという条件を満たす行」が一つもない例を示すのでなく、当該条件を満足する数値例および当該例の場合はどのセルとどのセルが着色されることを示してください。

この回答への補足

mike_gさん、コメントどうも有難うございます。例えば以下のようなデータがあった場合、

14.7256.19
22.5256.23
35.9257.2
48.6257.21
55.9257.22
66257.22
78.1257.22
88.1257.22
98.6257.23
108.1257.25
118.6258.2
128.1258.24
133.4259.08

3,5,6行目と7,8,10行目が着色されるということを想定しています。ただ、書き忘れていましたが、条件を満たす行が4,9行目のように2つしかない場合、処理しなくてはいけないデータの量からして該当する行が大量に出てきますので、可能なら該当する行が3つ以上のものだけをピックアップする方法があれば望ましいのですが・・・

また何かご不明の点がございましたら御連絡下さい。

補足日時:2009/05/16 13:07
    • good
    • 0

技術的にはともかく、論理的に困難だと思われます。



例として、
C列、D列とも0.05ずつ増加していく単純なデータ群があったとすると、順に3個ずつのデータがご質問の条件に合うグループを構成することになります。実は、3番目以降のデータはみな同様の条件になります。
データのindexで書くとして、(1,2,3)、(2,3,4)、(3,4,5)…といったグループが考えられますが、この場合3番目のデータは3種類の(異なる)グループに属することになるので、どのグループとしてピックアップすればよいのか不明ですし、所属するグループを一つに特定することはできないので、色分けも(3色の混合ならいざ知らず)できないのでは?
(±0.1の両端を含む含まないで若干変わりますが、主旨は違うところにあるので…)

実際のデータでは、そのようなことが起こることはまれなのかも知れませんが、論理的には一つのデータが何グループにでも所属可能なのでグループを特定することは無理ではないでしょうか?
上記のグループ(組み合わせ)を全てリストアップするとかなら不可能ではないと思いますが…

この回答への補足

fujillinさん、ご回答有難うございます。

>この場合3番目のデータは3種類の(異なる)グループに属することになるので、どのグループとしてピックアップすればよいのか不明ですし、所属するグループを一つに特定することはできないので、色分けも(3色の混合ならいざ知らず)できないのでは?

仰るとおりです。自分もこの点を忘れていました。

>上記のグループ(組み合わせ)を全てリストアップするとかなら不可能ではないと思いますが…

ではそのような方法はございますでしょうか?質問ばかりですみません。

補足日時:2009/05/14 16:56
    • good
    • 0

>C列の値の差が±0.1でかつD列の値の差が±0.1であるという条件


n行目とn+1行目の差がそれぞれ提示どおりという意味ならば
セルE2に =C3-C2
セルF2に =D3-D2
を入力し、範囲にコピー→オートフィルタで確認でいかが?

この回答への補足

Sinogiさん、ご回答頂き有難うございます。

私の理解不足かもしれませんが、教えて頂いた方法では、隣接する行の間のみしかチェックできないのではないでしょうか?

そうではなくて、隣接しない行も含めて全てのセルでスクリーニングをしたいのですがいかがでしょう?

補足日時:2009/05/14 16:48
    • good
    • 0

質問にあげた例の場合、どのようになって欲しいのでしょうか?

この回答への補足

nattocurryさん

とにかく上記の条件を満たす行だけが分かるように色つけができればいいのですが・・・なにぜチェックしなくてはならない行数が2000行ぐらいあるので、とても目視ではスクリーニングが困難なのです。

補足日時:2009/05/14 15:38
    • good
    • 0

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QExcel関数  A列の値とC列の値の間であればD列の値が抽出される関数

いつもお世話になっております。
F1にある数値を入れ、その数値が一覧表の中の範囲にマッチすればその数値を集計表シートのセルG1に反映したいのです。
例えば
A B C D E F G
1    1 ~ 1000  70 1200 ?
2  1001 ~ 1500  85
3  1501 ~ 2000  92
というような表があるとします。
F1に「1200」と入力するとG1には「85」と出るようにするにはG1にどのような関数を入れたらいいでしょうか。
必要があれば左の数値と~、右の数値は便宜上3列に分けて入力しています。
宜しくお願い致します。

Aベストアンサー

VLOOKUP関数でできます。

求める数値がD列にあるとします。
F1の値を $A$1:$D$3の範囲の左端の列から検索して、D列(検索範囲の4列目)の値を求めます。
セルG1に
=VLOOKUP(F1,$A$1:$D$3,4,TRUE)

一覧表を分かりやすくするために3列に分けているのだと思いますが、
値を求めるだけなら、B列、C列の「~1000」などは不要です。
B列、C列を削除して、「70,85,92・・・」をB列にしておけば
=VLOOKUP(F1,$A$1:$B$3,2,TRUE)
で求められます。

VLOOKUP関数をヘルプで参照していただくとわかると思いますが、
>TRUE を指定するか省略すると、検索値 が見つからない場合に、検索値 未満で最も大きい値が使用されます。
検索値が1200の場合、1200はA列にありませんが、1200未満でもっとも大きい値「1001」に対応する「85」が得られます。

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Q【EXCEL】条件付き書式、A列、C列、D列、E列が同じ値の時にB列の背景色を変えたい

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青になると思うのですが実際の結果は画像の通りです。

先の話の通りA列、C列、D列、E列の値が同じ時だけ
B列のセルの背景を青にしたい場合はどうい数式になるのでしょうか?

すいませんが、詳しい方、数式(関数?)で説明できる方よろしくお願い致します。

追記
可能でしたらA列、C列、D列、E列が空白の時はB列の背景色をなしにしたいと思っております。
→A列、C列、D列、E列に値があって、かつ同じ値の場合のみB列の背景を青にしたいです。

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青にな...続きを読む

Aベストアンサー

AND関数を使えば判定ができるのでは?
 =AND(A2<>"",A2=C2,C2=D2,D2=E2)

A列には常に判定する数値が入っているなら「A2<>""」は不要です。

参考サイト
http://www.relief.jp/itnote/archives/003940.php

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Q(COUNTIFS ?)B列に任意の値があり、D列からF列の間にも任意の値がある場合に値を返す関数式

会社で修理業者に物品の修理を依頼する仕事をしているのですが、修理の際に出張費がかかる場合があり、余計な出費を避けるため、エクセルで素早くチェックできるようにしたいと思っております。

添付ファイルのとおり、任意の行のB列と同じ値が他の行のB列にあって(業者名が同じで)、かつ、その行の修理日・修理日2・修理日3のいずれかの値から前後6日以内の値が他の行において修理日・修理日2・修理日3にあった場合に、G列に「調整」という文字が入るようにしたいと思っております。

どのように関数式を組めばよいのか、どなたかご教授願います。

Aベストアンサー

VBA で良かったでしょうか?
ダメならスルーということで

処理範囲の行は A3 ~ A列データのある行とします
行の範囲を求めたら、B列 ~ F列を配列に読み込みます
(C列は非表示?)
修理業者をベースに Dictionary にデータを覚えていきます
Dictionary は3段構成
1段目キー:修理業者名
2段目キー:行番号
3段目キー:日付

Dictionary に展開できたら、
各修理業者の異なる行番号での日付差をグルグルチェックしていきます

※ B列 ~ F列を読み込んだ配列 vA は、
Dictionary に覚えたら不要になるので、
vA の1列目を結果書き出し用に再利用しています


Public Sub Samp1()
  Dim dic As Object
  Dim vA As Variant, vK As Variant
  Dim vRp As Variant, vRc As Variant
  Dim vDp As Variant, vDc As Variant
  Dim i As Long, j As Long
  Dim bSkip As Boolean
  Const CDAYW As Long = 6
  Const CMOJI As String = "調整"

  Set dic = CreateObject("Scripting.Dictionary")

  With Range("A3", Cells(Rows.Count, "A").End(xlUp))
    vA = .Columns("B:F").Value
    For i = 1 To UBound(vA)
      If (vA(i, 1) <> "") Then
        For j = 3 To UBound(vA, 2)
          If (vA(i, j) <> "") Then
            If (Not dic.Exists(vA(i, 1))) Then
              dic.Add vA(i, 1) _
                , CreateObject("Scripting.Dictionary")
            End If
            If (Not dic(vA(i, 1)).Exists(i)) Then
              dic(vA(i, 1)).Add i _
                , CreateObject("Scripting.Dictionary")
            End If
            dic(vA(i, 1))(i)(vA(i, j)) = Empty
          End If
        Next
        vA(i, 1) = ""
      End If
    Next

    For Each vK In dic.Keys
      For Each vRp In dic(vK).Keys
        If (vA(vRp, 1) = "") Then
          bSkip = False
          For Each vDp In dic(vK)(vRp).Keys
            For Each vRc In dic(vK).Keys
              If (vRp <> vRc) Then
                For Each vDc In dic(vK)(vRc).Keys
                  i = Abs(DateDiff("d", vDp, vDc))
                  If (i <= CDAYW) Then
                    vA(vRp, 1) = CMOJI
                    vA(vRc, 1) = CMOJI
                    bSkip = True
                    Exit For
                  End If
                Next
                If (bSkip) Then Exit For
              End If
            Next
            If (bSkip) Then Exit For
          Next
        End If
      Next
    Next
    .Columns("G").Value = vA
  End With

  Set dic = Nothing
End Sub

VBA で良かったでしょうか?
ダメならスルーということで

処理範囲の行は A3 ~ A列データのある行とします
行の範囲を求めたら、B列 ~ F列を配列に読み込みます
(C列は非表示?)
修理業者をベースに Dictionary にデータを覚えていきます
Dictionary は3段構成
1段目キー:修理業者名
2段目キー:行番号
3段目キー:日付

Dictionary に展開できたら、
各修理業者の異なる行番号での日付差をグルグルチェックしていきます

※ B列 ~ F列を読み込んだ配列 vA は、
Dictionary に覚えたら不要になるので、
...続きを読む

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

Q行のデータ(a列b列c列)をd列に表示したい

a1、b1、c1のセルに入力したデータをd1セルに表示したい。可能でしょうか。一例「a1セルに1と入力、b1セルに2と入力、c1セルに3と入力しd1セルに123と表示する」

Aベストアンサー

d1セルに =a1&b1&c1

エクセルですよね?

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Q作業列なしで各行のA列とB列の数値の小さい方に、C列の数値をかけた値の和を求めたい

エクセルで、A列B列C列の1行目から100行目まで、それぞれ数値が入っているとします。
各行のA列とB列の数値の小さい方に、C列の数値をかけた値の和を求めたいです。
D列を作業列にするなら、D1に「=MIN(A1,B1)*C1」として、これをD100までコピーして、「=SUM(D1:D100)」で得られる数値を求めたいのですが、元となるデータが頻繁に追加されることも有り、作業列の追加が難しい状況です。
SUMPRODUCT関数を使おうにも、「=SUMPRODUCT(MIN(A1:A100,B1:B100),C1:C100)」では、A1からB100までの200セルのうちの最小値に、C1からC100の数値をそれぞれかけた値の和が返されてしまいます。
なにかよい方法があれば、お知恵を拝借できないでしょうか。

Aベストアンサー

こんにちは!

範囲を最初から多目にしておいてはダメですか?
SUMPRODUCT関数はどこかの列が空白の場合は「0」とみなされ合計しても結果に変化はないはずですので・・・

どうしても作業列を使用したくない場合の一例です。
表示したいセルに
=SUMPRODUCT(IF(A1:A1000<=B1:B1000,A1:A1000,B1:B1000),C1:C1000)

配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は上記数式をドラッグ&コピー! → 表示したいセルを選択 → 数式バー内に貼り付け  → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定します。
数式の前後に{ }マークが入り配列数式になります。

※ SUMPRODUCT関数自体が配列数式になりますが、
配列数式内に配列数式を入れた感じになります。m(_ _)m


人気Q&Aランキング

おすすめ情報