Q&A

回答の並べ替え:
投稿新規に質問を投稿する

セルのデータをCSVファイルとして保存する

kanoy kanoy

2020-03-10 18:02

いつもお世話になっております。kanoyです。

シートに貼り付けたデータをCSVファイルに保存するアクションセットを作成しようとして躓いております。CSVファイルには空レコードを出力させたくないため、INDIRECT関数を用いて出力箇所を可変で設定しようとしましたが、「セル範囲が正しくありません」とエラーが発生してアクションセットを適用できません。どのような式を設定すればよいのでしょうか?

例)
キャプチャは、セル範囲「B8:C9」をCSVファイルに保存する場合に設定した値です。
EXCELだと正常に範囲を指定できますが、CELFだと前述のエラーが発生します。
INDIRECT("B"&8&":C"&9)

Yexiongmao Yexiongmao
申し訳ありません。
INDIRECTが裸で書かれていたので、脊髄反射的に「=」が無いという回答をしてしまいました。
soriさんの回答のとおりです。
kanoy kanoy
>soriさん
大変参考になりました。
今後、悩む機会が増えそうですのでアクションの要求を整理して作成することに致します。
sori sori
お世話になります。
CELFの考え方として、セル番地とセル内容に分かれるようです。私は次のように整理しています。

「あるアクションの場合、セル番地を要求しているのか? セル内容を要求しているのか? を考えます。セル内容を要求しているのであればINDIRECT関数を使い、セル番地を要求しているのであれはINDIRECT関数は使わない。」

なお、間違ったINDIRECTの使い方ではエラーにならず、どこかのアドレス(セル番地)を指定している感じがします。だから一応は正常終了なのでしょう。

例外はあるかしれませんが、上記の考え方で概ね整理できます。

kanoy kanoy
>soriさん
アクションセットの差分比較に引き続き、御回答ありがとうございます。
ご指定の式で正しく範囲指定ができました。大変助かりました。ありがとうございます。

式:="A"&(始点-1)&":P"&(COUNTA(検索範囲)+始点-1)

>Yexiongmaoさん
御回答ありがとうございます。
記載した例が悪かったですね。申し訳ございません。下に実際に設定したかった範囲を記載しました。CSVファイルのレコードが貼り付けられた範囲をCOUNTAを使用して動的に指定しています。

設定したい範囲:"A"&(始点-1)&":P"&(COUNTA(検索範囲)+始点-1)
始点  :レコード1行目の行位置(5)
検索範囲:レコード1行目1列目~100行目1列目の範囲($A$5:$A$104)

ご指定の式で下記のようにINDIRECTを使用してみましたが、CSVファイルは作成されませんでした。

式:=INDIRECT("A"&(始点-1)&":P"&(COUNTA(検索範囲)+始点-1))

ちなみに当該アクションを「エラー情報を○○に出力する」で囲っていますが、エラー処理もされず・・・。このアクション結果はどこに出力されているのか謎です。また、機会がありましたらご協力よろしくお願いします。
sori sori
メダルベストアンサー
お世話になります。
添付画像のようにすればできました。
ちなみに、C1とC2が変数です。C1に1、C2に5、であれば、A1:A5の指定となります。

ご確認ください。
Yexiongmao Yexiongmao
こんにちは。

関数は式なので先頭に式を表す「=」が必要です。
「=INDIRECT("B"&8&":C"&9)」

しかし、="B"&8&":C"&9 は単に"B8:C9"という固定値を返しますから、
出力箇所を可変にできませんね。