当方バリバリの初心者で、的外れな質問かも知れませんがどなたか教えてください。

フィールドA~Dの4つのフィールドをレポートに表記する際に、
(1)データが空でないときだけフィールド名と共にデータを表記する。
(2)各フィールドがそれぞれ改行された状態で並ぶ。
(3)空のフィールドがあったらその分は行を詰める。

つまりABDにデータがあってCが空の場合、レポートを下記のように表記したいと思っています。

・フィールド名A: データA
・フィールド名B: データB
・フィールド名D: データD

考え方としてはレポート上にテキストボックスを作って、『=IIf(IsNull([フィールドA])=False,”フィールド名A:” & [フィールドA],Null) & IIf(IsNull([フィールドB])=False,”フィールド名B:” & [フィールドB],Null) ~』 という形で単純に繋いで処理したいのですが、そうすると改行が入りません。

モジュール(vbNewLine)を作らずに、何か簡単にテキストボックス上で処理する方法はありませんでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

横レス失礼致します。



> 何か私の書き方に問題があるのでしょうか。

「vbCrLf」はVBAの組み込み定数ですが、これはコントロールソースやマクロの式には
使えません。

ですので、「vbCrLf」の代わりに、Chr関数を使用して改行コードを入れてください。
(「Chr(13) & Chr(10)」で「vbCrLf」に相当します:順逆は不可)

=IIf(IsNull([フィールドA]),"","フィールドA:" & [フィールドA] & Chr(13) & Chr(10)) & IIf(IsNull([フィールドB]),"","フィールドB:" & [フィールドB] & Chr(13) & Chr(10)) ~


※個人的な趣味で、
  IIF関数の条件式を「IsNull(~)」(「=True」省略)に変更&引数の順を反転
  IIF関数の第2引数(=True時の値)を「Null」から「""」(空文字)に変更
 させていただきました。
    • good
    • 0
この回答へのお礼

出来ました!ありがとうございました。条件式もご提案いただいた形のほうが短くてすっきりしますね。

お礼日時:2009/05/27 08:10

=IIf(IsNull([フィールドA])=False,”フィールド名A:” & [フィールドA] & VbCrLf,Null) & IIf(IsNull([フィールドB])=False,”フィールド名B:” & [フィールドB] & VbCrLf,Null) ~


のようにフィールドA~Cの後ろに& VbCrLf(改行コード)を追加してください
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

早速アドバイスいただいたように書き込んでレポートをセーブしたところ、条件文が=IIf(IsNull([フィールドA])=False,”フィールド名A:” & [フィールドA] & [VbCrLf],Null)のようにVbCrLfが自動的にカギ括弧で括られてしまい、存在しないフィールドとしてNGになってしまいます。

何か私の書き方に問題があるのでしょうか。

お礼日時:2009/05/26 18:11

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Q文字+改行コードの置換について

文字+改行コードの置換についてご教授ください。
テキスト内の数字「9」とそれに続く改行コードのみ置換(削除)対象にしています。
全ての改行コードが対象ではないため、下記のようにエディタ(sakuraエディタ)で指定しました。

置換前: 9\r\n
※削除したいため、置換後の欄は空欄にしています。

しかし、この設定だと置換前の文字列を置換対象として認識しません。(検索対象としても)
\r\n だけだと改行コードを認識するので、文字と改行コードのセットを認識していないようです。

指定に誤りがあるのでしょうか。詳しい方ご教授お願いします。

Aベストアンサー

>「9」とそれに続く改行コードのみ置換(削除)
最後に「9」がある文字列の「9」を削除したいことでしょうか?

1あいうえお9 → 1あいうえお
9かきくけこ7 → 9かきくけこ7
さしすせそ999 → さしすせそ99

置換ダイアログの正規表現にチェックを入れます。

最後に「9」+改行コードのみ置換なら
置換前「9\r\n」
置換後「\r\n」

最後に「9」+改行コードがある行を削除するなら
置換前「^.*9\r\n」
置換後「」(空欄)

QEXCELの表、組[A列]:番号[B列] を 組[A列]:番号[行]に変換する方法

EXCELに
A列に組、B列に番号がそれぞれ反映されている表があります。
これを
A列に組、同行に番号が横並びに配置された状態に変更したいと考えております(添付画像)。

D列にはA列の組名を「重複なし」で貼り付けます。
このとき、E列~K列にどのような数式を入力すればよろしいでしょうか?
E1に入力する数式を教えていただけるとありがたいです。
何卒よろしくお願いいたします。

Aベストアンサー

こんばんは!

画像の配置だとE1セルに
=IF($D1="","",IFERROR(INDEX($B$1:$B$1000,SMALL(IF($A$1:$A$1000=$D1,ROW($A$1:$A$1000)),COLUMN(A1))),""))

配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → E1セルを選択 → 数式バー内に貼り付け →そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。

最後にE1セルのフィルハンドルで列・行方向にずぃ~~~!っとフィル&コピーします。

こんな感じではどうでしょうか?m(_ _)m

Qword置換で改行は置換できますか?

word置換で改行は置換できますか?

 一斉にEnterでの改行されている部分を置換する方法はないでしょうか?
 あればよろしくおねがいします。

Aベストアンサー

検索と置換画面の「置換」タブ画面で [オプション] を選択し、右下にある「あいまい検索」のチェックを外します。
検索する文字列にカーソルを置いて、[特殊文字] ボタン → 段落記号(P) を選択すると、検索する文字列に 「^p」が入力されます。(直接キー入力してもOKです)

置換後の文字列に置換する文字列、特殊文字を入力して置換をしますが、何も指定しないで、「置換」または「すべて置換」を行うと、改行が削除されます。

特殊文字の一覧項目の「段落記号」は[Enter]による改行で、[Shift]+[Enter]による改行は、「任意指定の行区切り(L)」です。
 

Qエクセルで[A1]月と[B1]日を一つのセルに

いつもお世話になっております。
エクセル2007で、A列に「月」を、B列に「日」を入力してあり、
これをC列に「□月□日」とまとめたいです。
調べてみて、=DATE(A1,B1,C1)という数字式にする方法があるとわかったのですが、
これでは、「□年」も入ってしまう上、やってみると、
A列:10、B列:10、C列:1としたところ、
D列に「1910/10/1」となってしまいました。

A列の「月」と、B列の「日」を、C列に「□月□日」と表示させるには、
どのようにすればいいのでしょうか?

お詳しい方、教えてください。

Aベストアンサー

DATE関数を使って、あとはセルの書式設定で表示法を変えます。
さんこうに
http://excel.onushi.com/function/date.htm

QWordVBA 置換処理での改行文字の可否

(実際にはExcelのVBAからWordファイルを開いての処理になるのでExcelのVBAで組んでいますが、)
WordのVBAで、置換処理を作成しています。
keyword1 = "検索文字"
keyword2 = "置換文字"
With objSelection.Find
.Text = keyword1
.Forward = True
.MatchWholeWord = True
.Replacement.Text = keyword2
.Execute Replace:=wdReplaceAll
End With
置換処理自体は出来ています。上記処理は置換部分の抜粋です。
しかし行いたいことはタイトルにもあります通り、置換文字中に改行を含めた状態での置換処理です。
長い文字列を置換するだけなら問題ないのですが、改行を含めてしまうと改行文字が別の文字に置き換えられてしまうようです。
置換先でも改行された状態にしたいのですが、これは書き方に問題があるのでしょうか?
もしくは置換処理ではなく、他の方法を取る必要があるのでしょうか?
教えてください。よろしくお願いいたします。

(実際にはExcelのVBAからWordファイルを開いての処理になるのでExcelのVBAで組んでいますが、)
WordのVBAで、置換処理を作成しています。
keyword1 = "検索文字"
keyword2 = "置換文字"
With objSelection.Find
.Text = keyword1
.Forward = True
.MatchWholeWord = True
.Replacement.Text = keyword2
.Execute Replace:=wdReplaceAll
End With
置換処理自体は出来ています。上記処理は置換部分の抜粋です。
しかし行いたいことはタイトルにもあります通り、置換文字中に改行を含めた状態での置換...続きを読む

Aベストアンサー

こんにちは。

>長い文字列を置換するだけなら問題ないのですが、改行を含めてしまうと改行文字が別の文字に置き換えられてしまうようです。

質問の「WordVBA 行の削除」で、偶然に書いたのですが、改行コードの問題で、Excel側は、セルにvbLF が入っているはずですから、

一旦取得した、置換文字を、以下のようにして
keyword2 = Replace(keyword2, vbLf, Chr(11), , , vbBinaryCompare)

置換すればよいのではありませんか?

ちなみに、これが入っているWordテーブルのセルの中で、改行コードの種類が確認できれば、「WordVBA 行の削除」のVBAのほうも可能です。Paragraph 自体の変更はありません。

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

QフリーソフトYokkaGrepでの置換時の改行作業

フリーソフトYokkaGrepでの置換時の改行作業

「改行 置換」でググると、改行を置換でなくす…という方法はでてくるのですが、
置換する時に改行をつける方法がよくわかりませんでした

やりたいことは

aaaa
bbbb
</body>

という文に

検索文字列  </body>
置換後文字列 [改行]ccc[改行]</body>

最終的に

aaaa
bbbb
ccc
</body>

という文章にしたいです。

YokkaGrepというフリーソフトを使っているのですが
改行の指定方法がわかりません。。。

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

Aベストアンサー

ううーんゴメンナサイ。
いまそのソフトをインストールして試す時間がありません。
YokkaSoftのサイトには掲示板があって活発に書き込みがあるようなので、そこで質問してはどうでしょうか。
下のページからsupportで行けるみたいです。
http://www.yokkasoft.net/

Q[VBA][Excel]クリップボードからフィールドを区切って貼り付けるマクロ

すでにクリップボードにあるテキストデータを、スペースを区切り文字(連続した区切り文字は1文字として扱う)として貼り付けるマクロが作りたいです。
どうか教えてください。

Aベストアンサー

こんなので、どうかな

'
'メモ帳の複数行をコピーする。
'
Sub クリップボードにあるテキストデータをスペースを区切り文字()
Dim objClip As Object
Dim pData As String


'クリップボードのセット
Set objClip = GetObject("New:1C3B4210-F441-11CE-B9EA-00AA006B1A69")
With objClip
.GetFromClipboard
pData = WorksheetFunction.Trim(.GetText)
pData = Replace(pData, " ", Chr(9))
Application.CutCopyMode = False
End With


Set objClip = GetObject("New:1C3B4210-F441-11CE-B9EA-00AA006B1A69")
With objClip
.SetText pData
.PutInClipboard
End With


Cells(1, "A").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub

こんなので、どうかな

'
'メモ帳の複数行をコピーする。
'
Sub クリップボードにあるテキストデータをスペースを区切り文字()
Dim objClip As Object
Dim pData As String


'クリップボードのセット
Set objClip = GetObject("New:1C3B4210-F441-11CE-B9EA-00AA006B1A69")
With objClip
.GetFromClipboard
pData = WorksheetFunction.Trim(.GetText)
pData = Replace(pData, " ", Chr(9))
Application.CutCopyMode = False
End With


Set obj...続きを読む

QMacOS10.6 エクセル2008 改行コード 置換方法

MacOS10.6 にてExcel2008を使用しています。
いま処理しようとしているデータのセル中に改行が含まれており、これらを置換にて一括消去をしたいのですが改行コードの入力方法がわかりません。
Windowsでしたら「Ctrl+J」で検索文字列の欄に入力できるようなのですがMacで行うと変な文字がでて当然ながら置換はできません。

セル中で「Control+Option+Return」にて改行を入力する事はできますが、これを上記の置換の検索文字列欄で行うと最終セルまで移動してしまうだけで置換はされません。

大量のデータで、しかも今後定期的な作業が必要となる為に途方にくれてます。
どなたか検索置換にて「検索文字列欄」に改行コードを入力する方法ご存じでしたら教えてください。
お願いいたします。

Aベストアンサー

残念ながらExcel2008はVBAが搭載されていないようです。

えっ!VBAがない?
http://officetanaka.net/excel/mac/tips02.htm

Q[原紙]→[スキャナー]→[フォトショップ]→[エクセル]での原寸印刷のやり方

タイトルに書きましたとおり、[原紙]→[スキャナー]→[フォトショップ]→[エクセル]で、最初に取り込んだ[原紙]と全く同じサイズで印刷に出したいのですが、原寸よりも小さくなってしまうので困っています…。

紙に印刷された画像をスキャナで取り込み、フォトショップでgif画像にしました。
と、ここまでは原寸だったのですが、エクセルに貼り付けて印刷しましたら、実際のものよりも一回り小さくなって印刷されてしまいました。
縦横比は同じです。
2.33cmが、1.75cmになりました。

エクセルに貼り付けるときに、「挿入」→「図」→「ファイル」から貼り付けました。
「図の書式設定」では100%になっています。

普段は[原紙]→[スキャナー]→[フォトショップ]→[イラストレーター]で印刷しているのですが、その時は原寸で出ます。(今回もその方法なら原寸なのですが…)

原寸で印刷するにはどうしたらいいのでしょうか?
よろしくお願い致します。

Aベストアンサー

画像を貼り付けるエクセルのシートは事前にページ設定が出来てますでしょうか?
メニューバーで表示>改ページプレビューの設定にして見やすいサイズに表示倍率を上のツールバーで設定してください。青色の改ページラインが貼り付けた画像とほぼ同じになっていますか?画像より大きければドラッグして改ページラインを画像に合わせてください。


人気Q&Aランキング