14歳の自分に衝撃の事実を告げてください

おはようございます。たびたびお世話になります。

文字列の連結で
 フィールド1 フィールド2 フィールド3
 材料a     材料b    材料c
 材料a     材料d
 材料c

というデータがあり、クエリで&を使用し文字の連結をしています。
材料a,材料b,材料c
材料a,材料d
材料c
というようにしたいのですが、そのまま連結してしまうと、
材料a,材料b,材料c
材料a,材料d,
材料c,,
となってしまいます。
適当な関数も見つからず、不要な『,』を置換で消してしまう事も考えているのですが、うまくいきません。
良い方法はないでしょうか?

A 回答 (5件)

式1: [Field1] & IIf([Field2],",","") & [Field2] & IIf([Field3],","

,"") & [Field3]
    • good
    • 0
この回答へのお礼

ありがとうございます。この式で出来そうです。

お礼日時:2006/02/17 09:46

#3のmshr1962です。


>実際作業してみたところ「式に未定義関数'Replace'があります。」というメッセージが出てしまいました。
新しい VBA 関数を式で使用できない
http://support.microsoft.com/kb/225956/ja
確認しました。この症状みたいですね。ユーザー定義関数として設定する必要があるみたいです。
    • good
    • 0
この回答へのお礼

ありがとうございました。勉強になりました。やっと関数を使えるレベルなので、いろいろな方の意見を参考にできて勉強になります。これからも宜しくお願いします。

お礼日時:2006/02/17 10:16

=Replace(Trim([フィールド1]&" "&[フィールド2]&" "&[フィールド3])," ",",")


では如何でしょうか
    • good
    • 0
この回答へのお礼

ありがとうございます。実際作業してみたところ「式に未定義関数'Replace'があります。」というメッセージが出てしまいました。

お礼日時:2006/02/17 09:33

NO1です。

 

質問を読み違えていたようですね。 すみません。

1.2つのカンマを1つに置き換える。
2.最後の文字がカンマだったらそれを消す。

作業を行えばよいわけで
1.は
Replace([対象データ],",,",",")
2.は
vbaで下記のような関数を作るのが楽かな

function DelRtComma(taishostr) as string
delrtcomma = taishostr
if right(taishostr,1) = "," then
delrtcomma = left(taishostr,len(taishostr)-1)
end if
    • good
    • 0
この回答へのお礼

たびたびありがとうございます。1については私も本で調べてやってみたのですが、『式に未定義関数'Replace'があります。』というメッセージがでてしまいまいした。
2.もやってみたのですが、ちょっとうまくいかないみたいです。結果が代わりませんでした(,がついたままです)。どこか置き換える文字があるのでしょうか?

お礼日時:2006/02/17 09:32

文字列としてつなげるのには & を使います。


[フィールド1] & [フィールド2] & [フィールド3]
とすればできるはずですが、前後にスペースなどが入っているのであれば、trimなどを使って省く必要があります。

この回答への補足

早速ご回答ありがとうございます。ご指摘のように連結すると、フィールドにデータがないところにも『,』が入ってしまうため、語尾に不要の『,』ができてしまいます。この語尾の『,』削除できる関数というのはあるのでしょうか?

補足日時:2006/02/17 08:35
    • good
    • 0
この回答へのお礼

すみません補足し忘れましたが、文字間に,を入れたい為、
[フィールド1] &"," &[フィールド2] &"," &[フィールド3]としています。

お礼日時:2006/02/17 08:39

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

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