データ処理マクロNo.25467
emc827 さん 08/09/25 04:41
 
winxp he sp3, hm707, hmex402f, excel2003
aa.txtから下記マクロ結果を出したいのです。
できる範囲でマクロを作成しました。
$str1マクロ コード8840 市場T 引数の書き方を教えてください。

aa.txt:
8840,大京,T
8928,穴吹興産,OS

マクロ結果:表示を短くするため、,にしてありますが、本当はtab区切りです。
8840,大京,T,=(RSS|'8840.T'!現在値-RSS|'8840.T'!前日終値)/(RSS|'8840.T'!前日
終値)*100,
=(RSS|'8840.T'!最良買気配値1-RSS|'8840.T'!前日終値)/(RSS|'8840.T'!前日終値)
*100
8928,穴吹興産,OS,=(RSS|'8928.OS'!現在値-RSS|'8928.OS'!前日終値)/(RSS|'8928.O
S'!前日終値)*100,
=(RSS|'8928.OS'!最良買気配値1-RSS|'8928.OS'!前日終値)/(RSS|'8928.OS'!前日終
値)*100

マクロ: tab区切り
//openfile "c:\\hogehoge\\aa.txt";
$str1 = "\\tT\\t=(RSS|'8840.T'!現在値-RSS|'8840.T'!前日終値)/(RSS|'8840.T'!
前日終値)*100\\t=(RSS|'8840.T'!最良買気配値1-RSS|'8840.T'!前日終値)/(RSS|'8
840.T'!前日終値)*100";
replaceallfast ",.*$", $str1, regular;
//saveas "d:\\stock\\aa.txt";

追伸:
秀丸担当様 秀丸エディタマクロ作者会議室 での質問は、初心者の私には気が重い
ので、こちらの会議室で質問させて頂きました。


よろしくお願いします。

[ ]
RE:25467 データ処理マクロNo.25469
秀丸担当 さん 08/09/25 10:25
 

正規表現では、検索文字列で括弧でくくった部分は、置換文字列で \1(マクロ
なら\\1) という感じで、\と数字で表すことができます。

例えば、検索文字列が

^(.*?),(.*?),(.*?)$

というような場合、「,」区切りの3つが、置換文字列では先頭から順に \1 \2
\3 として表現できます。

ヘルプの、正規表現の「\1・\2 一般的正規表現互換のタグ付き正規表現 」を参
照してみてください。

[ ]
RE:25469 データ処理マクロNo.25473
emc827 さん 08/09/28 05:35
 
いろいろやって見たのですが、思うようにできませんでした。
すみませんが、教えて頂けないでしょうか。
よろしくお願いします。


[ ]
RE:25473 データ処理マクロNo.25474
三月 さん 08/09/28 06:35
 
>いろいろやって見たのですが、思うようにできませんでした。
>すみませんが、教えて頂けないでしょうか。

最初に提示されたマクロのreplaceallfastの最初の引数を
秀丸担当さんの提示された検索文字列にして
$str1 の最初の方は
$str1 = "\\1\\t\\2\\t\\3\\t=(RSS|'\\1.\\3'!
のようにします。
\\tと同じように\を重ねて、\\1や\\2や\\3を入れればよいはなしです。
続きは自分でどうぞ。

[ ]
RE:25474 データ処理マクロNo.25475
emc827 さん 08/09/28 08:12
 
秀丸担当さん 三月さん ありがとう御座います。
うまくいきませんでした。
ヒントではなく、答えを教えて頂けないでしょうか。

//openfile "c:\\hogehoge\\aa.txt";
$str1 = "\\1\\t\\2\\t\\3\\t=(RSS|'\\1.\\3'!現在値-RSS|'\\1.\\3'!前日終値)/(R
SS|'\\1.\\3'!前日終値)*100\\t=(RSS|'\\1.\\3'!最良買気配値1-RSS|'\\1.\\3'!前
日終値)/(RSS|'8840.T'!前日終値)*100";
replaceallfast ",.*$", $str1, regular;
//saveas "d:\\stock\\aa.txt";


[ ]
RE:25475 データ処理マクロNo.25476
三月 さん 08/09/28 08:56
 
>//openfile "c:\\hogehoge\\aa.txt";
>$str1 = "\\1\\t\\2\\t\\3\\t=(RSS|'\\1.\\3'!現在値-RSS|'\\1.\\3'!前日終値)/
>(RSS|'\\1.\\3'!前日終値)*100\\t=(RSS|'\\1.\\3'!最良買気配値1-RSS|'\\1.\\3
>'!前日終値)/(RSS|'8840.T'!前日終値)*100";
>replaceallfast ",.*$", $str1, regular;
>//saveas "d:\\stock\\aa.txt";
>

先の
>>最初に提示されたマクロのreplaceallfastの最初の引数を
>>秀丸担当さんの提示された検索文字列にして
ってところをすっ飛ばしてますね。
replaceallfast "^(.*?),(.*?),(.*?)$", $str1, regular;
とすればカンマで区切られている各部位
8840,大京,T
の場合、8840が\1、大京が\2、Tが\3でとりだせると。
(置換ダイアログでは\1だけど、マクロ内では\\1で)

こっちも置き換え忘れてる部分が見受けられます。
$str1 = "\\1\\t\\2\\t\\3\\t=(RSS|'\\1.\\3'!現在値-RSS|'\\1.\\3'!前日終値)/(R
SS|'\\1.\\3'!前日終値)*100\\t=(RSS|'\\1.\\3'!最良買気配値1-RSS|'\\1.\\3'!前
日終値)/(RSS|'\\1.\\3'!前日終値)*100";
(最後の'8840.T'部分)


[ ]
RE:25476 データ処理マクロNo.25477
emc827 さん 08/09/28 10:37
 
三月様 秀丸担当 様 
回答ありがとう御座います。お蔭様で できました。
 回答が無い場合、秀丸をあきらめて、excelに戻ろうかと、思っていました。これ
で秀丸を続けられます。
 私にとって最も難しい問題、厄介な秀丸マクロを抱えています。
こちらで問合せしますので、相談にのってください。準備中です。

よろしくお願いします。




[ ]
RE:25477 マクロについて教えてくださいNo.25491
emc827 さん 08/10/05 15:53
 
winxp he sp3, hm707, hmex402f, excel2003

aa.txtから下記マクロ結果bb.csvを出したいのです。
分かりにくいため、できるだけ詳しく説明させて頂きます。

1.説明
データ数max30個 それ以上はcutします。
ザラバ情報1、2、4:10個づつ入れます。
ザラバ情報5だけ、3個づつ入れます。3個*10=30個maxとなります。
//コメントです。
マクロ結果をbb.csvファイルとして出力します。

aa.txt:データ数15個
8840,大京,1
1844,大盛工業,1
2402,アマナ,1
8928,穴吹興産,2
5934,日本アルミ,2
2164,地域新聞社,5
3381,ビズネット,9
8936,リプラス,1
2318,BBネット,5
2341,アルバイトT,9
4224,ロンシール,1
2316,モスインス,5
2281,プリマ,1
4028,石原産,1
5232,住友大阪,1

マクロ結果:bb.csv
2,3  //固定
10,0,1,ザラバ情報1  //固定
10,0,1,サブ画面1  //左端10:下記データ数 10個づつ入れます  0,1:固定
STK,8840,大京,1,,,,,0,1,0,0,0
STK,1844,大盛工業,1,,,,,0,1,0,0,0
STK,2402,アマナホールディングス,1,,,,,0,1,0,0,0
STK,8928,穴吹興産,2,,,,,0,1,0,0,0
STK,5934,日本アルミ,2,,,,,0,1,0,0,0
STK,2164,地域新聞社,5,,,,,0,1,0,0,0
STK,3381,ビズネット,9,,,,,0,1,0,0,0
STK,8936,リプラス,1,,,,,0,1,0,0,0
STK,2318,ビービーネット,5,,,,,0,1,0,0,0
STK,2341,アルバイトタイムス,9,,,,,0,1,0,0,0
5,1,1,サブ画面2  //左端5:下記データ数5個 データ数15個なので残り5個となりま
す  1,1:上記0,1:固定 の連番 以下同様
STK,4224,ロンシール工業,1,,,,,0,1,0,0,0
STK,2316,モスインスティテュート,5,,,,,0,1,0,0,0
STK,2281,プリマハム,1,,,,,0,1,0,0,0
STK,4028,石原産業,1,,,,,0,1,0,0,0
STK,5232,住友大阪セメント,1,,,,,0,1,0,0,0
0,2,1,サブ画面3
0,3,1,サブ画面4
0,4,1,サブ画面5
0,5,1,サブ画面6
0,6,1,サブ画面7
0,7,1,サブ画面8
0,8,1,サブ画面9
0,9,1,サブ画面10
10,1,1,ザラバ情報2  //固定
10,0,1,サブ画面1  //左端10:下記データ数10個  0,1:固定
STK,8840,大京,1,,,,,0,1,0,0,0
STK,1844,大盛工業,1,,,,,0,1,0,0,0
STK,2402,アマナホールディングス,1,,,,,0,1,0,0,0
STK,8928,穴吹興産,2,,,,,0,1,0,0,0
STK,5934,日本アルミ,2,,,,,0,1,0,0,0
STK,2164,地域新聞社,5,,,,,0,1,0,0,0
STK,3381,ビズネット,9,,,,,0,1,0,0,0
STK,8936,リプラス,1,,,,,0,1,0,0,0
STK,2318,ビービーネット,5,,,,,0,1,0,0,0
STK,2341,アルバイトタイムス,9,,,,,0,1,0,0,0
5,1,1,サブ画面2  //左端5:下記データ数5個  1,1:上記0,1:固定 の連番 以下同様
STK,4224,ロンシール工業,1,,,,,0,1,0,0,0
STK,2316,モスインスティテュート,5,,,,,0,1,0,0,0
STK,2281,プリマハム,1,,,,,0,1,0,0,0
STK,4028,石原産業,1,,,,,0,1,0,0,0
STK,5232,住友大阪セメント,1,,,,,0,1,0,0,0
0,2,1,サブ画面3
0,3,1,サブ画面4
0,4,1,サブ画面5
0,5,1,サブ画面6
0,6,1,サブ画面7
0,7,1,サブ画面8
0,8,1,サブ画面9
0,9,1,サブ画面10
10,2,1,ザラバ情報3
0,0,1,サブ画面1
0,1,1,サブ画面2
0,2,1,サブ画面3
0,3,1,サブ画面4
0,4,1,サブ画面5
0,5,1,サブ画面6
0,6,1,サブ画面7
0,7,1,サブ画面8
0,8,1,サブ画面9
0,9,1,サブ画面10
10,3,1,ザラバ情報4  //固定
10,0,1,サブ画面1  //左端10:下記データ数10個  0,1:固定
STK,8840,大京,1,,,,,0,1,0,,,,0,,0,,0,
STK,1844,大盛工業,1,,,,,0,1,0,,,,0,,0,,0,
STK,2402,アマナホールディングス,1,,,,,0,1,0,,,,0,,0,,0,
STK,8928,穴吹興産,2,,,,,0,1,0,,,,0,,0,,0,
STK,5934,日本アルミ,2,,,,,0,1,0,,,,0,,0,,0,
STK,2164,地域新聞社,5,,,,,0,1,0,,,,0,,0,,0,
STK,3381,ビズネット,9,,,,,0,1,0,,,,0,,0,,0,
STK,8936,リプラス,1,,,,,0,1,0,,,,0,,0,,0,
STK,2318,ビービーネット,5,,,,,0,1,0,,,,0,,0,,0,
STK,2341,アルバイトタイムス,9,,,,,0,1,0,,,,0,,0,,0,
5,1,1,サブ画面2  //左端5:下記データ数5個  1,1:上記0,1:固定 の連番 以下同様
STK,4224,ロンシール工業,1,,,,,0,1,0,,,,0,,0,,0,
STK,2316,モスインスティテュート,5,,,,,0,1,0,,,,0,,0,,0,
STK,2281,プリマハム,1,,,,,0,1,0,,,,0,,0,,0,
STK,4028,石原産業,1,,,,,0,1,0,,,,0,,0,,0,
STK,5232,住友大阪セメント,1,,,,,0,1,0,,,,0,,0,,0,
0,2,1,サブ画面3
0,3,1,サブ画面4
0,4,1,サブ画面5
0,5,1,サブ画面6
0,6,1,サブ画面7
0,7,1,サブ画面8
0,8,1,サブ画面9
0,9,1,サブ画面10
10,4,1,ザラバ情報5  //固定
3,0,1,サブ画面1  //左端3:下記データ数3個  0,1:固定
STK,8840,大京 ,1,,,,,0,1,0,,,,0,,0,,0,,
STK,1844,大盛工業 ,1,,,,,0,1,0,,,,0,,0,,0,,
STK,2402,アマナホールディングス ,1,,,,,0,1,0,,,,0,,0,,0,,
3,1,1,サブ画面2  //左端3:下記データ数3個  1,1:上記0,1:固定 の連番 以下同様
STK,8928,穴吹興産,2,,,,,0,1,0,,,,0,,0,,0,,
STK,5934,日本アルミ,2,,,,,0,1,0,,,,0,,0,,0,,
STK,2164,地域新聞社,5,,,,,0,1,0,,,,0,,0,,0,,
3,2,1,サブ画面3
STK,3381,ビズネット,9,,,,,0,1,0,,,,0,,0,,0,,
STK,8936,リプラス,1,,,,,0,1,0,,,,0,,0,,0,,
STK,2318,ビービーネット,5,,,,,0,1,0,,,,0,,0,,0,,
3,3,1,サブ画面4
STK,2341,アルバイトタイムス,9,,,,,0,1,0,,,,0,,0,,0,,
STK,4224,ロンシール,1,,,,,0,1,0,,,,0,,0,,0,,
STK,2316,モスインスティテュート,5,,,,,0,1,0,,,,0,,0,,0,,
3,4,1,サブ画面5
STK,2281,プリマハム,1,,,,,0,1,0,,,,0,,0,,0,,
STK,4028,石原産業,1,,,,,0,1,0,,,,0,,0,,0,,
STK,5232,住友大阪セメント,1,,,,,0,1,0,,,,0,,0,,0,,
0,5,1,サブ画面6
0,6,1,サブ画面7
0,7,1,サブ画面8
0,8,1,サブ画面9
0,9,1,サブ画面10


よろしくお願いします。


[ ]
RE:25491 マクロについて教えてくださいNo.25492
秀丸担当 さん 08/10/06 10:12
 

>1.説明
>データ数max30個 それ以上はcutします。
>ザラバ情報1、2、4:10個づつ入れます。
>ザラバ情報5だけ、3個づつ入れます。3個*10=30個maxとなります。
>//コメントです。
>マクロ結果をbb.csvファイルとして出力します。

ザラバ情報とは何でしょうか。
どういうことをされたいのかわからないですが、これは、最初の置換マクロの話
の続きなのでしょうか。

例えば、
8840,大京,1

STK,8840,大京,1,,,,,0,1,0,0,0
というように置換するのは、タグ付き正規表現の置換の方法で、分かると思いま
す。

固定の行があるとしたら、
insert "2,3  //固定\n";
という感じで挿入できます。

行のコピーは、選択、コピー、貼り付けをそのままマクロにすればできると思い
ます。

[ ]