dポイントプレゼントキャンペーン実施中!

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

ネットショップの商品登録用に、社独自の商品管理シートから、即座に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タグなど文字列を入れています。
また、半角スペースが必要なため’ ’を入れています。

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

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

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

A 回答 (2件)

> 半角がほしいところだけ、’にしました


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の前後の括弧は不要なので、外しています。
    • good
    • 1
この回答へのお礼

ありがとうございます!すばらしくきれいな数式です。私ももう少し整理できないかな~と思っていました。知識不足のところをご指摘いただき、本当に感謝です。

お礼日時:2016/06/16 13:23

こんにちは。


こちらでもやってみました。
まず半角スペースのところは「’ ’」ではなく「” ”」で良いと思います。
あとは簡単に修正したみただけなので望まれている結果になるかが分かりませんが以下の式ですとエラーは出ませんでした。
いかがでしょう?

=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<>"","◆重さ","")))
    • good
    • 1
この回答へのお礼

ありがとうございます!そうだったんですね。勉強不足でした。お教えいただいた通りのやりかたで、きちんと機能しました!本当に感謝です。

お礼日時:2016/06/16 13:22

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