エクセルでチェックボックスをつけた後、リンクしたセルが「TRUE」になった横のセルの文章をつなげて一つの文章にしたいのですが、どのような関数にすればよいのでしょうか。
イメージは、画像のA列のチェックボックスに、チェックした横のC列のセルの言葉を、セル「E2」につなげて表示したいです。
IF関数、VLOOKUP関数、CONCATENATE関数か「&」などを使うといいのかなとは考えましたが、どうしてよいかわからないので教えていただきたいです。
よろしくお願いいたします。

「エクセル 条件が一致する複数のセルを検索」の質問画像

A 回答 (2件)

[No.1お礼]へのコメント、


申し訳ない、説明が不十分でした。
提示した式は配列数式として入力しなければなりません。

「配列数式として入力」の意味
此処では式を例えば =SUM((A1:A10)*(B1:B10)) としておく
1.該当式をコピーして指定のセルに入力
 ̄ ̄(でも、まだ Enterキーを叩かない!)
2.Ctrl+Shift+Enter を「エイヤッ!」と叩き付け
3.[数式バー]を眺めて、下記のように、入力した式が { }で
 ̄ ̄囲まれていることを確認
 ̄ ̄ {=SUM((A1:A10)*(B1:B10))} ←配列数式!
    • good
    • 0
この回答へのお礼

大変にありがとうございました。
できました。お手数おかけしました。

お礼日時:2017/05/14 19:01

1.次式を入力したセル G1 を下方にズズーッとオートフィル


 ̄ ̄ =IFERROR(INDEX($C$1:$C$6,SMALL(IF($B$2:$B$6,ROW($B$2:$B$6),""),ROW(A1))),"")
2.セル E2 に式 =G2&G3&G4&G5&G6 を入力
    • good
    • 0
この回答へのお礼

とても早い回答ありがとうございました。
ただ大変申し訳ありませんが、オートフィルでドラッグをするとROWがA1、A2・・・となって何も返ってこなかったので、手でA1に打ち直してみました。しかし、そうすると、今度はチェックを入れても「C2」の「あい」しか返ってこず、つなげた文章が「あいあいあい・・・」というようになってしまいます。うまく説明できずにすみません。

お礼日時:2017/05/14 16:46

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

このQ&Aを見た人はこんなQ&Aも見ています

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

Qエクセル 関数 1と入力されたセルの隣の列の値から、一つ前に1と入力されたセルの隣の列の値の引き算

1と入力されたセルの隣の列の値から、一つ前に1と入力されたセルの隣の列の値の引き算をしたいです。
具体的に、添付した画像の表で説明します。
A列は、連続した数値が入っています。
B列には、ところどころに、1が入力されています。(空白のセルが多いです。)
C列には、B列で、1と入力されたセル(例:B6)と同じ行のA列のセル(A6)の値から、B列で、一つ前に1と入力されたセル(B2)と同じ行のA列のセル(A2)の値の引き算をしたいです。
いまのところ、C列の結果は、D列にしめしたような計算で、ひとつずつ計算しています。

C列を、自動的におこなってくれるように工夫したいのですが、どんな関数をつかったらよいかわからないので、教えてほしいです。
補足ですが、行の入れ替え(サイズを変える、等)はしたくないです。(列の挿入はもちろんOKです。)

どうぞよろしくお願いします。

Aベストアンサー

D列を作業用に使用します。D列を最終的には見えないように設定してください。(文字色を白にするなど)
D1セルに「=A1*B1」
D2セルに「=IF(B2<>1,D1,A2*B2)」
D3セルより下はD2セルをコピー
C1セルに「=IF(D1=0,"",D1)」
C2セルに「=IF(D1=D2,"",D2-D1)」
C3セルより下はC2セルをコピー

QEXCEL VLOOKUP関数の式を隣の列にコピーする(列番号が異なる)と、うまくその式が使えない

すみません、つい先ほど、一度投稿したかと思ったんでですが、
アップされていないので、また投稿しました。もし、2重投稿なら、すぐに削除します。

質問:
数式のコピー(オートフィル)は、理解しているのですが、
VLOOKUPで設定した数式を列番号が、変わる項目へもコピーして
使用できるかと、コピーしたんです。そして、列番号だけ変更したんですが、うまく動きません。 数式そのものは、同じなんで列番号だけ
変えたら使えそうなんですが。。。だめですかね。。
ちなみに、その数式をコピーする際ににちょっとコツがあったような。。
単純なオートフィルでもなく、形式を選択して貼り付け(数式)でもNG.
たしか、あったような。。数式バーで作業するような、、うーーー。

どなたか、わかるかた教えてください!
それとも、列番号がことなる場合には、最初から式を設定するのがベストですか。。
こんな私に一発ご指導を!お待ちしております。

Aベストアンサー

こんにちは。maruru01です。

具体的な配置がわからないので、適当に設定します。
仮に、参照するデータ範囲がSheet2のA1:G100として、
検索値がA列で、B~G列に参照先のデータを引っ張ってくるとします。
B1に、

=VLOOKUP($A1,Sheet2!$A$1:$G$100,COLUMN(B1),FALSE)

と入力して、右へ下へコピーします。

基本的には、参照範囲は行列とも絶対参照で、検索値は列のみ絶対参照で、ということだと思います。

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」が得られます。

QEXILEのカウント関数について教えて下さい。 40行あるA列に同じ文字をセルに入力。B列には異なる

EXILEのカウント関数について教えて下さい。

40行あるA列に同じ文字をセルに入力。B列には異なる文字をセルに入力。C列にA行とB行を結合した文字を表示しています。
D列にC列の行ごとで同じセルの数をカウントしたいと思っていますが
C列は関数がある為、関数をカウントしてしまいます。D列は、40行全て40と表示してしまいます。表示されてない文字はカウントしない様に出来ないでしょうか。教えて下さい。

Aベストアンサー

No.1です。

数式は2行目に入れているのですね?
>何も表示されてない時に1048575と途方にもない・・・

Excel2007以降では最終行が1048576行目になります。
データがない場合は空白セル数(数式は入っているが空白に見えている)セル数が表示されているものと考えられます。

このような場合はエラー処理が必要になります。
一般的にはIF関数で対処できます。
(エラー処理は色々な場面で出てきます)

D2セルの数式を
=IF(C2="","",COUNTIF(C:C,C2))
としてフィルハンドルで下へコピーしてみてください。
数式の意味
C2セルが空白に見えている場合は何も表示しない、
そうでない場合はC列にあるC2セルの個数を表示
といった感じになります。

※ 厳密にいえば数式が入っているので「空白」ではないのですが
現段階ではこの程度でやめておきます。m(_ _)m

Qconcatenate関数とIF,OR関数を使った数式で「エラーがあります」と出てしまう

こんにちは。いつもお世話になります。
こちらで質問をしながらなんとか出来上がりそうなところまで来たエクセルのシートなのですが、
最後の最後でエラーが出て困っています。

ネットショップの商品登録用に、社独自の商品管理シートから、即座にhtml記述にしたいため、商品管理シートの各セルを結合させて、html文章に組み立てる、という数式を作っています。

そこでできたのが

=concatenate
($AB$2,N2,$AD$2,$AC$2,O2,$AC$2,
(if(P2<>"",$AE$2,"")),(if(P2<>"","<p>","")),
P2,(if(P2<>"","</p>","")),(if(P2<>"","<p>",""),
(if(P2<>"","◆長さ","")),(if(P2<>"","<p>","")),' ',P2,
(if(P2<>"","</p>","")),(if(Q2<>"","<p>",""),
(if(Q2<>"","◆軸径","")),(if(Q2<>"","<p>","")),' ',Q2,
(if(Q2<>"","</p>","")),(if(R2<>"","</p>","")),
(if(R2<>"","<p>",""),(if(R2<>"","◆重さ","")),)
====以下省略=====

というもの。
数式の中にpタグなど文字列を入れています。
また、半角スペースが必要なため’ ’を入れています。

これでセルに数式として入力したところ、「入力した数式にエラーがあります」と出てしまいました。

()の中の文字列は”(ダブルクオーテーションマーク)でいいのですよね?
半角がほしいところだけ、’にしました。そもそも何か記述が間違っていますか?

記述に間違いがあれば指摘していただきたいです。どうかご教授ください。
よろしくお願いします!

こんにちは。いつもお世話になります。
こちらで質問をしながらなんとか出来上がりそうなところまで来たエクセルのシートなのですが、
最後の最後でエラーが出て困っています。

ネットショップの商品登録用に、社独自の商品管理シートから、即座にhtml記述にしたいため、商品管理シートの各セルを結合させて、html文章に組み立てる、という数式を作っています。

そこでできたのが

=concatenate
($AB$2,N2,$AD$2,$AC$2,O2,$AC$2,
(if(P2<>"",$AE$2,"")),(if(P2<>"","<p>","")),
P2,(if(P2<>"","</p>"...続きを読む

Aベストアンサー

> 半角がほしいところだけ、’にしました
CONCATENETE関数を使うときに文字列(スペースも含む)の場合は、
前後に、二重引用符で括る必要があります。
ですから、引用符で半角スペースを括るのは無意味です。
http://www.kokodane.com/kan19.htm
[関数の引数]ダイアログでCONCATENETE関数を指定して、[文字列]の
ボックスに半角スペースを入れてみれば、どのようになるのかを確認が
できます。

それよりも、質問にあるIF文の整理をしたほうが良いのでは?
例えば、P2セルが空白でない場合に以下の指定をしていますよね。
(if(P2<>"",$AE$2,"")),
(if(P2<>"","<p>","")),
P2,
(if(P2<>"","</p>","")),
(if(P2<>"","<p>",""),
(if(P2<>"","◆長さ","")),
(if(P2<>"","<p>","")),
' ' ,← ここは間違い
P2,
(if(P2<>"","</p>","")),

IF関数では、
 =IF([論理式],[真の場合],[論理式][真の場合][偽の場合]) 
になります。
[論理式]の条件として「P2<>""」の指定式を、幾つも分けている意味は
ないと思います。
[偽の場合]は常に""になるのですから、それも一つにまとめたほうが
分かり易くなります。

[真の場合]は、以下のようにまとめられます。
このようにまとめておけば、P2セルの指定部分と
(分かり易いように、&演算子の前後を開けています)

$AE$2 & "<p>" & P2 & "</p>" & "<p>" & "◆長さ " & P2 & "</p>"
("◆長さ "にすることで、半角スペースも含むようにしています)

これでも助長な書き方なので、もっと整理できます。
$AE$2 & "<p>" & P2 & "</p><p>◆長さ " & P2 & "</p>"

ですから、IF関数を以下のように書くこともできます。

=IF(P2<>"",$AE$2&"<p>"&P2&"</p><p>◆長さ "&P2&"</p>","" )
または
=IF(P2<>"",CONCATENATE($AE$2,"<p>",P2,"</p><p>◆長さ ",P2,"</p>","" )

このようにまとめておけば、P2セルの部分と"◆長さ"のような文字列の
部分を書き換えたものを続けるだけで済みます。

質問にあるようなhtml文章に組み立てる、という数式なら、

=CONCATENATE
(($AB$2,N2,$AD$2,$AC$2,O2,$AC$2,
IF(P2<>"",$AE$2&"<p>"&P2&"</p><p>◆長さ "&P2&"</p>","" ),
IF(Q2<>"","<p>"&Q2&"</p><p>◆軸径 "&Q2&"</p>","" ),
IF(R2<>"","<p>"&R2&"</p><p>◆重さ "&R2&"</p>","" ),
====以下省略=====

のようになります。
IFの前後の括弧は不要なので、外しています。

> 半角がほしいところだけ、’にしました
CONCATENETE関数を使うときに文字列(スペースも含む)の場合は、
前後に、二重引用符で括る必要があります。
ですから、引用符で半角スペースを括るのは無意味です。
http://www.kokodane.com/kan19.htm
[関数の引数]ダイアログでCONCATENETE関数を指定して、[文字列]の
ボックスに半角スペースを入れてみれば、どのようになるのかを確認が
できます。

それよりも、質問にあるIF文の整理をしたほうが良いのでは?
例えば、P2セルが空白でない場合に以下の指定をしていま...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報