アプリ版:「スタンプのみでお礼する」機能のリリースについて

Wordの差し込み印刷についてお聞きしたいことがあります。

Word、Excelについては多少知識はありますが
差し込み印刷については初心者です。


Excelからデータを持ってきたいのですが
セルには6桁の数字が入っていて、そのうちの頭1桁をとる場合に
フィールドコードでMod関数のような式を入れると
上手く行くのではないかと考えています。

http://oshiete.goo.ne.jp/qa/4865527.html

上記ページを参考にしたのですが、なかなか上手く行きません。

私の場合、参照しているセルの名前がF2なので

初期段階のフィールドコードは

{ MERGEFIELD "F2" }

とあったので

{ = MOD ( { MERGEFIELD "F2" },100000 ) \# # }

としてみました。

構文エラーになります。


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

A 回答 (4件)

質問にある過去ログの回答者です。



過去ログでのNo,1の回答内容では一部構文エラーになりますね。
B1とE1では問題ないのですが、INT関数とMOD関数の組み合わせ
における桁数の問題が解消されていませんので。
Wordの式フィールドで使えるMOD関数では、MOD(x,y)の値にて
値yでは2桁までしか対応していません。ですから、4桁ある場合
は{ = INT ( MOD ( { MERGEFIELD N0. },100 ) / 10 ) \# # }
のようなフィールドコードは成立しません。
{ = MOD ( { MERGEFIELD N0. },100 ) }だと3桁になるで、
無効となり、構文エラーになるのです。

私が回答しておきながら、今まで気が付かないままでいたこと
が恥ずかしいですね。過去ログのほうが締め切られていません
ので、今回の質問で気が付きましたから、修正した回答を追記
として過去ログにて回答しておきました。勉強不足を露呈して
いる証拠ですね。間違っていた修正前の過去ログを参考にした
質問者さんなどの閲覧者を混乱させて、すいませんでした。


さて、ここからは質問の差し込み印刷における桁の抽出方法を
説明します。
6桁の頭1桁を抽出したいだけならば、以下のINT関数と演算子の
組み合わせて対応できます。
{ = INT ( { MERGEFIELD "F2" }/100000 ) }
数値書式スイッチ「\# #」がないのは、必ず6桁ある数値として
差し込みをするので、6桁目がない場合の挿入位置における表示
を空白スペースに置き換える必要がないためです。

6桁で5桁目だけを抽出したい場合は以下の数値書式スイッチを
INT関数と演算子の組み合わせて、簡単に抽出できます。
{ INT ( { MERGEFIELD "F2" }/10000 ) \# x }
数値書式スイッチ「\# x」は桁数を指定するスイッチですので、
INT関数での計算結果が2桁になっていても下1桁だけを表示する
ことができます。
この数値書式スイッチを使えば、6桁のうちの下3桁だけを抽出
することも可能です。
例{ = 123456 \# xxx } → 結果 456

このことからも分かるように、過去ログでは数値書式スイッチの
「\# x」で下一桁だけを抽出することができるので、MOD関数を
使う必要はなかったのです。
{ =INT ( { MERGEFIELD N0. }/1000 ) \# x }
{ =INT ( { MERGEFIELD N0. }/100 ) \# x }
{ =INT ( { MERGEFIELD N0. }/10 ) \# x }
{ MERGEFIELD N0. \# x }
    • good
    • 0

No.3で書き忘れたので、追記。



No.2の回答でも少し書いていますが、MOD関数で対応せずに
数値書式スイッチ「\# x」で桁数を指定したほうが簡単です。
{ MERGEFIELD "F2" \# xxxxx}

この方がスマートですし、無駄がありません。
桁区切りにすることも簡単ですしね。
{ MERGEFIELD "F2" \# xx,xxx}
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございます!

質問の意図は
任意の桁をだけとりたい
と言うものでした。

ですので、No2の回答で大丈夫です!


でも・・・できませんでした↓

どうも「!構文エラー」になってしまいます・・・


でも、考え方はわかったので

もう少しためしてみます!

詳しく説明していただきありがとうございました!

お礼日時:2011/09/28 14:14

No.2の回答者です。


なぜ、MOD関数での値yが3桁以上になった時に構文エラーに
なるのかを、私なりに検証して調べてみました。

どうも、MOD関数の「MOD(x,y)」の引数を区切るのに半角の
カンマ「,」を使うと、桁区切りとして認識しているようで、
値xのみを記入しているのと同じ状態として構文エラーになる
みたいです。

そこで構文エラーにしないために、値xとカンマをしっかりと
分ける意味で、文字列や計算した数値として認識できるもの
として記載する必要があるようです。

差し込み印刷での例
文字列と認識させる場合
{ = MOD ( { QUOTE "{ MERGEFIELD "F2" }" },100000 ) }
計算した結果として認識させる場合
{ = MOD ( { = { MERGEFIELD "F2" } },100000 ) }

No.2の回答では、6桁の数字のうちから頭1桁をとるという
意味が、頭1桁だけを抽出することがだと思っていました。
けれど、質問にあるMOD関数を使った式フィールドの内容で
新たに考え直してみると、6桁のうちから頭1桁がなくなった
残り5桁を表示させる計算式を希望しているのですね。

つまり、差し込む数値が仮に123456だとしたら、1を取って
23456だけにしたいのですよね。
{ = MOD ( { =123456 },100000 ) }
なら有効な計算式になります。
これと同じことを上記の差し込み例では可能にしています。

No.2の回答内容は参考程度として、値xと値yを別々の数値
として認識できる形式にすることで、MOD関数で値yを3桁
以上でも可能にすることが、検証結果から導き出しました。
    • good
    • 0

フィールドの上で右クリックして「フィールドの更新」(またはF9キーを押す)を行ってください。

    • good
    • 0
この回答へのお礼

それは知りませんでした!

他の項目で必要なことがあったので助かりました。
ありがとうございました!

お礼日時:2011/09/28 14:15

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

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