|
いつもお世話になっております。
データベースから立ち上がってきたcsvデータに計算式を埋め込み、 下までコピーして(今のところまだ)、企業体を追加して、csvで上書き保存すると、 良いのではないかと思い作成してみたのですが、値の更新が途中ででてきて消す事ができません。 「a」の位置で止まり、手動でescキーを押すと進みます。
fget等でやっていたのですが、うまく作れず時間が掛かる(データもマスターも一万行以上)のでExcelに戻ってきました。 ただ、できれば手動は残念です。 御教授いただけませんでしょうか?
EXEC("D:\明細.exe") id = GETID("売上明細検索", "ThunderRT6FormDC", -1) CLKITEM(id, "実 行", CLK_BTN) CLKITEM(GETID("SQL処理中", "ThunderRT6FormDC", -1), "はい", CLK_BTN) CLKITEM(id, "はい", CLK_BTN) GETID("Microsoft Excel - Nrb0000.CSV", "XLMAIN", -1) //データベースから出力されるのを待つ。 id = GETID("売上明細検索", "ThunderRT6FormDC", -1) CLKITEM(id, "終 了", CLK_BTN) Excel = XLOPEN("C:\Windows\Nrb0000.CSV") //起動済みのExcelを捕まえる。 //データがcsv形式で立ち上がります。
THREAD 値の更新を閉じる
XLSETDATA(Excel,"年","AR1") XLSETDATA(Excel,"=MID(INDIRECT(ADDRESS(ROW(),1)),1,4)*1","AR2") XLSETDATA(Excel,"月","AS1") XLSETDATA(Excel,"=MID(INDIRECT(ADDRESS(ROW(),1)),5,2)*1","AS2") XLSETDATA(Excel,"企業体","AT1") XLSETDATA(Excel,"=VLOOKUP(INDIRECT(ADDRESS(ROW(),6)),マスタ.csv!B:P,15,FALSE)","AT2")//ここで止まります。・・・a
マスタ = XLOPEN("D:\得意先マスタ.csv",XL_BOOK)
IF MSGBOX("マスターを閉じますか?") THEN XLCLOSE(マスタ,"得意先マスタ.csv")
Procedure 値の更新を閉じる() REPEAT トップ = GETID(GET_ACTIVE_WIN) 更新ID = GETID("値の更新", "#32770")//GETID("値の更新") ACW(更新ID) sleep(1) CLKITEM(更新ID, "キャンセル", CLK_BTN) UNTIL 更新ID = -1 Fend
|
No.1713 2015/09/17(Thu) 21:23:13
|
☆ Re: vlookupで別ファイルを参照する計算式をExcelに埋め込みたい / stuncloud |
|
|
そもそもcsvファイルを参照先に出来ないんですが、そういうものなんでしょうかね? csvに書き込む値は参照式ではなくvlookupで取得した値そのものでも構いませんか? であれば
// D:\得意先マスタ.csv 上でvlookup関数を使用した結果の値を取得する マスタ = XLOPEN("D:\得意先マスタ.csv",XL_BOOK) target = "検索値" // ※ 直接入れるなりC:\Windows\Nrb0000.CSVから取得するなりして、検索値を入れてください range = マスタ.Range("B:P") value = マスタ.WorksheetFunction.VLOOKUP(target, range, 15, false)
// 取得した値を書き込む XLSETDATA(Excel, value, "AT2")
といった感じでどうでしょう
|
No.1715 2015/09/18(Fri) 11:43:02
|
|
☆ Re: vlookupで別ファイルを参照する計算式をExcelに埋め込みたい / sen |
|
|
>>そもそもcsvファイルを参照先に出来ないんですが、そういうものなんでしょうかね?
済みません。違ってました。
csvで上書き保存すると ↓ xlsで保存すると
>>csvに書き込む値は参照式ではなくvlookupで取得した値そのものでも構いませんか?
式が望みではあります。(^_^)
csvとcsvなので一度保存して閉じた状態でfputでのやり方をこの掲示板で教えて頂いて、色々とやってみております。
こんなのとか。 FUNCTION f担当抽出(var 得意先cd) 抽出 = fopen("temp.csv", f_write) fput(抽出, trim(doscmd("findstr <#dbl><#dbl>" + 得意先cd + "<#dbl><#dbl> 掛け率.csv"))) fclose(抽出) id = fopen("temp.csv") For i = 1 to fget(id,-1) ifb 得意先cd = fget(id,i,3) then Result = fget(id,i,21) //担当者コード break endif next fclose(id) FEND
ただ、欲しいデータを足すというか、自分がいじくるとどんどん遅くなるのです。(^_^) そこで、基本的に企業体名とかの項目を足してピポットテーブルで集計するだけなので、計算式をatokの単語登録に入れておいて手作業で、にもどっていました。これが結構待たずにできて結構普通な感じなのです。 そこで上記の形で「値の更新」を閉じるところで引っかかっている次第です。
|
No.1717 2015/09/20(Sun) 10:00:18
|
|
☆ Re: vlookupで別ファイルを参照する計算式をExcelに埋め込みたい / stuncloud |
|
|
> 「値の更新」を閉じるところで引っかかっている次第です。 ですよね、それが > そもそもcsvファイルを参照先に出来ない ということだったのですが… 最初にcsvファイルをxlsxで保存するようにして、参照式はそのxlsxファイルを対象にするといった工夫が必要なのでは?と思っております 外部ファイル参照については完全にExcelの話ですし、僕もそこまで詳しくはないのでこれ以上はちょっと回答しかねます…
|
No.1718 2015/09/21(Mon) 02:02:41
|
|