IFが大変です・・・。

スプレッドシート (Calc) について
返信する
EST
記事: 1
登録日時: 8月 4, 2015, 10:47 pm

IFが大変です・・・。

投稿記事 by EST »

自力で解決出来ました。
色々なサイトで関数について学んで見たら、何とかなりました。(^^
お騒がせしました。   2015/8/8 9:08


追記:14行分ほど作ってから、この方法の致命的なミスに気付きました…。
何か別の方法を探してみます。
どうしても無理そうなら諦めます…。(IF作業に心が折れ気味です…。)
2015/8/6 1:50


初めまして。まだ使い慣れない初心者ですみません。
別シートにある日付を比較して、その日付の最終ログ値を求めたいんです。

=IF(Sheet1.B82<Sheet1.B83;Sheet1.C82;IF(Sheet1.B83<Sheet1.B84;Sheet1.C83;IF(Sheet1.B84<Sheet1.B85;Sheet1.C84)))

こんな感じのIFを一行150×3個くらいのIF…。それを推定4500程……。IFが大変です…。
何か良い方法は無いでしょうか…。

日付        時間  消費量 合計値
2015/08/03 23:30:25 0 1.39
2015/08/03 23:40:25 0 1.39
2015/08/03 23:50:25 537 1.39
2015/08/04 00:00:25 10.3 1.42
2015/08/04 00:10:25 6.5 1.43
2015/08/04 00:20:25 118 1.44

このログが10分間隔で出て来てるんで(.csvで)、手作業が辛い…。それにログ読み難い…。
何か良い方法があれば教えてください。お願いします。
これを手作業でしていると、頭にもしもしカメよ、かめさんよと歌が浮かんで来て泣きたくなります…。
OpenOffice 4.1.1
windows7
ike@九州
記事: 33
登録日時: 4月 30, 2009, 9:05 am

Re: IFが大変です・・・。

投稿記事 by ike@九州 »

既に解決されているようですが、他の応用もできましたので追記いたします。
Calc と Base の連携を応用します。
下記に csv があるとしての仮定で下準備(以下¥は半角に訂正して下さい) 
E:¥File¥test.csv
メモ帳で以下の schema.ini ファイルを作成し csv と同じフォルダにいれます。
csv は 1行目項目名あり、タブ区切りと仮定します。(カンマの場合は CSVDelimited )

[test.csv]
ColNameHeader=True
CharacterSet=ANSI
Format=TabDelimited
Col1 DateTime
Col2 DateTime
Col3 Double
Col4 Double

参考URL http://antonsan.net/study/excel/excel045.php

次に Base の新規作成から”既存のデータベースに接続”で ”ADO”を選択
データソースのURL に以下をいれます。
Provider=MSDASQL;Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=E:¥File;
次へ、ユーザー名は空白、
次へそのまま、次へでデータベースの登録、編集を行います。
Base 上でテーブルに test.csv があるのを確認できれば正常です。
SQL表示でクエリーの新規作成から以下を貼り付けて Q1 として作成保存します。

SELECT `Q3`.`A` AS `日付`, `Q3`.`消費量`, `Q3`.`合計値` FROM ( SELECT ( `日付` + `時間` ) AS `A`, `日付`, `時間`, `消費量`, `合計値` FROM `test.csv` ) AS `Q3`, ( SELECT `日付` + MAX( `時間` ) AS `B` FROM `test.csv` GROUP BY `日付` ) AS `Q2` WHERE `Q3`.`A` = `Q2`.`B`

任意の Calc ファイルを開いてデータソースボタンを押します。
登録データベースを開いていくとクエリー欄に Q1 があるのでクリックします。
データソースの右ペインに Q1 の結果が表示されます。
結果の左上セルをドラッグドロップで Calc のシートA1まで持ってきて挿入します。
上記を行う事でリンク範囲が作成されます。
後は、データソースを開かなくても範囲内のセルを一つ選択すると、
データ>範囲の更新 が有効になり更新を行えばいつでも最新のデータが表示されます。

後書き
Base の新規作成で ADO ではなく テキスト で作成した場合は
MAX 関数や GROUP BY 句が使用できません。inner join 句 は使用不可でした。
必ずADOと schema.ini の組み合わせが必要です
Windows 環境必須ですが csv でのマクロを使わない応用に期待できますね。
NellyAurora
記事: 2
登録日時: 11月 18, 2023, 1:24 pm

Re: IFが大変です・・・。

投稿記事 by NellyAurora »

The csv ファイルの最初の行にはフィールド名があり、タブ区切りとみなされます。 (カンマ区切りには CSVDelimited を使用します) heardle 80s
Openoffice 4.1.5 on Windows 10
返信する

“Calc”に戻る