• ベストアンサー

エクセルで全ての範囲で同じ値がある場合に抜き出す。

エクセルで指定範囲のセル,例えば、範囲「A」A1~A3、範囲「B」A10~A15、範囲「C」A20~A25, これらそれぞれの範囲内にあるセルの値が全ての範囲に同じ値が入ってる場合、その値を抜き出してB列に表示する。 A 4番 11番 16番 B 4番 15番 7番 11番 7番 C 4番 11番 16番 5番 6番 上記の様にA列にデータがあります。この場合全ての範囲にあるのは。4番と11番なので、B列に4番と11番を縦に並べる。 B列に入れる式を教えて下さい。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.2

B1: =IF(SUM(COUNTIF(A$10:A$15,A1),COUNTIF(A$20:A$25,A1))=2,A1,"")

fightman11
質問者

お礼

ありがとうございました。

その他の回答 (3)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

関数で表示したいなら以下のような配列数式を使うことになります(Excel2007以降のバージョンを使用している場合)。 配列数式ですので、上記の式を入力後Ctrl+Shift+Enterで確定してください。 =IFERROR(INDEX(A:A,SMALL(IF(COUNTIF($A$10:$A$15,$A$1:$A$3)*COUNTIF($A$20:$A$25,$A$1:$A$3),ROW($A$1:$A$3)),ROW(A1))),"")

fightman11
質問者

お礼

ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! VBAになってしまいますが 一例です。 Sheet1のA列にデータがあり、B列に結果を表示するとします。 Sheet2を作業用のSheetとしていますので、Sheet2は何もデータがない!という状態にしておいてください。 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面がでますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) 当方のやり方が悪いのかもしれませんけど、 簡単にできるかな!って思っていましたが、結構ダラダラと長くなってしまいました。 Sub test() 'この行から Dim i, j, k As Long Dim str As String Dim ws As Worksheet Set ws = Worksheets("sheet2") Columns(1).Copy Destination:=ws.Cells(1, 2) For i = 1 To ws.Cells(Rows.Count, 2).End(xlUp).Row Application.ScreenUpdating = False If ws.Cells(i, 2) Like "[A-z]" Then str = ws.Cells(i, 2) End If If ws.Cells(i, 2) <> "" And Not ws.Cells(i, 2) Like "[A-z]" Then ws.Cells(i, 1) = str & "_" & ws.Cells(i, 2) Else ws.Cells(i, 1) = "" End If Next i For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1) Like "[A-z]" Then j = j + 1 ws.Cells(1, Columns.Count).End(xlToLeft).Offset(, 1) = Cells(i, 1) End If Next i For j = 3 To ws.Cells(1, Columns.Count).End(xlToLeft).Column For i = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row If ws.Cells(i, 1) Like ws.Cells(1, j) & "_" & "*" Then ws.Cells(Rows.Count, j).End(xlUp).Offset(1) = ws.Cells(i, 2) End If Next i Next j For i = 2 To ws.Cells(Rows.Count, 3).End(xlUp).Row For j = 4 To ws.Cells(1, Columns.Count).End(xlToLeft).Column If WorksheetFunction.CountIf(ws.Columns(j), ws.Cells(i, 3)) Then k = k + 1 End If Next j Cells(1, 2) = "結果" If k = ws.Cells(1, Columns.Count).End(xlToLeft).Column - 3 Then Cells(Rows.Count, 2).End(xlUp).Offset(1) = ws.Cells(i, 3) End If k = 0 Next i ws.Cells.Delete Application.ScreenUpdating = True End Sub 'この行まで ※ A列の範囲は「A」~「Z」までのアルファベットで区切られているという前提です。 他に簡単な方法があればごめんなさいね。m(_ _)m

fightman11
質問者

お礼

ありがとうございました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

=IF(COUNTIF(A1:A24,A1)=3,A1,"")

fightman11
質問者

補足

回答ありがとうございます。 私の説明不足でしたが、実際にはA列の指定の範囲と範囲の間にも値が入ってるために、 そこの値もカウントされてしまいました。 指定範囲だけで出来ますか?

関連するQ&A

  • Excel 範囲内で条件を満たす異なる列の合計

    範囲内で条件を満たすセルで、異なる列の値を合計したい。 A1からA5に{10,20,30,40,50}という値が B1からB5に{0,1,2,3,4}という値が C1からC5に{5,6,7,8,9}入っている事とします。 A1:A5の範囲で複数の条件をつけます。 B列ではA列のセルの値が15<A<35となる、A2とA3と同じ行であるB2とB3の値 C列ではA列のセルの値が25<A<45となる、A3とA4と同じ行であるC3とC4の値 全部でB2,B3,C3,C4のセルの値を合計を返すセルを作成したい。 この場合目的のセルが返す値は1+2+7+8で18となる。 補助行を作ってでも構いませんので、このような加算が可能とするセルの作り方はないでしょうか。 Excel2000を使用しています。どうかよろしくお願いします。

  • エクセルで指定範囲の最大値・最小値を求めたい

    エクセルで、A列、B列、C列・・・にそれぞれ100個ずつ数値データがあります。 各列で1番上のデータからn番目のデータまでの範囲の最大値・最小値と、 n+1番目のデータから100番目のデータまでの範囲の最大値・最小値をそれぞれ求めたいのです。 nの値は列ごとに異なっており、例えばA列のn値は[A105]のセルに記入されています。 [A102]=40のとき、 =MAX(A2:A40) =MAX(A41:A101) などと個別に範囲指定をせずに、[A105]の値を引用して最大値・最小値を求めるにはどうすればいいでしょうか。

  • エクセル 範囲の代入

    あるセルに入力された「範囲(C10:C13など)」を 別のセルの関数式に用いることができませんか? 具体的には、 A列:項目番号 B列:区分 ※A列の項目番号が入った行のB列には、項目名が入り、C以降は空白。 C列:種別 D列:名称 E列:詳細 ※B列の区分が入った行は、A列は空白・C~E列に各入力があります。 といった表が25シートあります。 項目毎にいくつの区分をもっているか・各種別がいくつづつかを カウント式で表記を 手作業になってしまいましたが、 ひとまず 25シート全ての A列に項番の入った行のF列に 項目毎の区分数を COUNTAを使って表示させてみました。 そこから範囲を抜き出し B列の区分毎のカウントを、COUNTIFを用いて (例えば、項番1の「A」はいくつか・「B」はいくつか、項番2の「A」はいくつか・「B」はいくつか・・) を出したいのですが・・・うまくいきません。 →F列に代入した式から、範囲式部分(例えばC14:C36・・・)をG列に抜き出し、  それをCONUTIFに代入できないか? というものです。 もちろん、別の方法があれば上記のやり方に こだわりはありません! 知識不足につき お手数とは存じますが、ご教示いただけますと助かります。 よろしくお願い致します。

  • 関数が入っている列で値のある最後のセルの値を返す

    お尋ねします。 関数が入っている列で式の値が入っている一番下のセルの値を調べるにはどうしたら良いでしょうか? 例      A列   1   5   2   10   3   13   4   (式の値が無いのでゼロ) B1セルにA3セルの13と言う値を返したいのですが、列に式(SUMPRODUCT関数)が入っていて、実際はA4セルのゼロが返ってきます。 またシート1~シート5 まで上記と同じ式が入っていて、シート1のA列の最後の値「13」をシート6のB1セルに値を返す場合、INDIRECT関数を使った場合、どういう式になるでしょうか? ご回答よろしくお願いします。

  • 【エクセル】範囲内の空白ではない一番下のセル

    またよろしくお願いします。 2段階にわけて質問します。 【質問1】 範囲A1:A10の空白ではない一番下のセルの値を得たい 【質問2】 たとえば質問1でA8が該当セルだった場合、範囲B1:B8の空白ではない一番下のセルの値を得たい。 A列の状態によってB列の範囲を変えて選び出すのが難しそうです。 よろしくおねがいします。

  • エクセルでセルの値を数式の範囲として使うには?

    タイトル通りなのですが、エクセルでセルの値を数式中で範囲として使うにはどうすればよいのでしょうか? 例えばA1セルに「1」という値が入っており、B2セルに「10」という値が入っているとします。この時、数式中で、「A1」と「B2」を用いて、「E1からE10まで」を指定することは可能でしょうか。可能でしたらどのような数式を組めば良いのでしょうか? よろしくお願いします。

  • 横軸に範囲をとるExcelのグラフについて

    Excelでのグラフ表現についての質問です。 添付画像の左側のように、A列、B列にそれぞれ0~100までのいずれかの値が書かれたセルがあるとします。 このとき、右側のようにセルの値がある範囲内(今回の例の場合20ずつ)であるものの個数でグラフ(折れ線)を作りたいと考えています。 このように、横軸に固定の値ではなく「△~○」のように範囲を指定して、その範囲に該当するセルの個数を縦軸にしたグラフというのはExcelで作ることは出来るでしょうか? また、どのようにすれば実現出来るかも教えていただけると助かります。 よろしくお願いします。

  • Excelで、指定した範囲の先頭のセルの値を取得するには?

    Excelで、指定したセル範囲(1列)で、空白を除いた先頭のセルの値を取得する 方法はありますでしょうか? できればマクロを使用せずに関数だけでできるほうがありがたいです。 例)  | A ------------ 1 |(空白) 2 | ○ 3 | △ 4 | × 5 | □ の場合、検索範囲にA1:A5 を指定すると、○が値として返ってくるような感じです。

  • 《エクセル》 マクロ-セルの範囲指定の式

    いつもお世話になります。 2つお聞きしたいのですが、エクセルで、 ・「A列のデータのあるセル範囲のみを指定する」と、 ・「A列のデータのあるセル範囲の、隣(B列)のセルを指定する」 というマクロの式はどのように書けば良いのでしょうか。

  • セル範囲がすべて空欄の場合、合計値の回答欄が空欄になるエクセル関数は?

    セル範囲がすべて空欄の場合、合計値の回答欄が空欄になるエクセル関数は? A1~P20の範囲に数字(0含む)と空欄が混在しております。 各横軸で合計値を求め、A~Pまで全て空欄だった場合は、空欄にしたいのですが、 SUMだと「0」と表示されてしまいます。 なお、計算範囲のセルが0と表示されている場合は、結果「0」と表示してかまいません。 ISBLANKで1つ1つのセルを指定していく方法もあるのですが、式が長くなってしまいます。 =IF(AND(ISBLANK(A1),ISBLANK(B1),ISBLANK(C1)・・・・・・),"",SUM(A1:P1)) もう少し短い式で上記のような計算ができる関数はあれば教えてください。

専門家に質問してみよう