Indexへ
(10086)//【10070】→(10076)
------------------------
【タイトル】数値の合計
【記事番号】 10070 (*)
【 日時 】07/08/03 17:18
【 発言者 】自営W

その他→表計算→範囲内合計のように(mなどは可能ですが)
単位の付いた数値でも合計ができる外変はありませんか?


Indexへ
(10070)←【10076】→(10078)
------------------------
【タイトル】Re(1):数値の合計
【記事番号】 10076 (10070)
【 日時 】07/08/03 22:21
【 発言者 】コジマ

▼自営Wさん:
>その他→表計算→範囲内合計のように(mなどは可能ですが)
>単位の付いた数値でも合計ができる外変はありませんか?

単位の付いた数値が合計できないのは、理由があると思います。

Kg と m の足し算はできませんので。

◎バッチファイル(範囲内合計.bat)

@REM 単位毎の範囲内合計
@echo off
REM #jww
REM #cd
REM #h3
REM #0合計値記入位置を指示してください free(L) Read(R)
REM #c行間(図寸) 無指定:5mm/_/a
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 > jwc_temp.txt
pause
exit
#!ruby -Ks
gyo=5.0
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            gyo=argument[2..-1].to_f
    end
end
suti_a=[]
while ARGF.gets
    xy=split
    if xy[0]=~/^c[hsvroptkz2]/
        moji=$'.chomp if $_ =~ /\"/
        if moji =~ /(-*\d+,*\d*\.*\d*)([^\d]*)/
            suti_a<<[($1.delete(",")).to_f,$2.chomp]
        end
    end
end
puts "bz"
sum=0;tani="";y=0.0
while youso=suti_a.shift
    sum,tani=youso[0],youso[1]
    if suti_a.size>0
        a=suti_a.select{|item| tani == item[1]}
        if a && a.size>0
            suti_a -= a
            a.each{|item|sum += item[0]}
        end
    end
    printf("ch 0 #{y} 1 0\"%s%s\n",sum,tani)
    y -= gyo
end


Indexへ
(10076)←【10078】→(10080)
------------------------
【タイトル】Re(2):数値の合計
【記事番号】 10078 (10076)
【 日時 】07/08/04 09:05
【 発言者 】自営W

▼コジマさん:

出来ました。感激です。ありがとうございました。
今まで諦めて手計算でしてましたが、今後の計算が楽しみです。


Indexへ
(10078)←【10080】→(10081)
------------------------
【タイトル】Re(2):全角数字対応
【記事番号】 10080 (10076)
【 日時 】07/08/04 09:53
【 発言者 】コジマ

▼コジマさん:
表計算の範囲内合計は、全角数字対応ですね。
以下、全角数字対応版です。


@REM 単位毎の範囲内合計
@echo off
REM #jww
REM #cd
REM #h3
REM #0合計値記入位置を指示してください free(L) Read(R)
REM #c行間(図寸) 無指定:5mm/_/a
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 > jwc_temp.txt
pause
exit
#!ruby -Ks
hash={"ー"=>"-","−"=>"-","0"=>"0","1"=>"1","2"=>"2","3"=>"3","4"=>"4","5"=>"5","6"=>"6","7"=>"7","8"=>"8","9"=>"9",","=>",","."=>"."}

gyo=5.0
while ARGV.size>1
  case argument=ARGV.pop
    when /\/a/
      gyo=argument[2..-1].to_f
  end
end
suti_a={}
while ARGF.gets
  xy=split
  if xy[0]=~/^c[hsvroptkz2]/
    moji=$'.chomp if $_ =~ /\"/
        tango=moji.split('')
        tango.collect!{|item|hash.key?(item) ? hash[item] : item}
        moji=tango.join
    if moji =~ /(-*\d+,*\d*\.*\d*)([^\d]*)/
            tani=$2.chomp
            sum=($1.delete(",")).to_f
            suti_a.key?(tani) ? suti_a[tani] += sum : suti_a[tani] = sum
    end
  end
end
puts "bz"
y=0.0
suti_a.each{|key,value|
    printf("ch 0 #{y} 1 0\"%s%s\n",value,key)
    y -= gyo
}


Indexへ
(10080)←【10081】→(10082)
------------------------
【タイトル】Re(3):全角数字対応
【記事番号】 10081 (10080)
【 日時 】07/08/04 11:06
【 発言者 】sugi

sugiです。皆さん、こんにちは。

コジマさん wrote:
> tango.collect!{|item|hash.key?(item) ? hash[item] : item}

ハッシュを使うのも良いですが jcode を利用して tr で置き換え
る方法もあります。

#! ruby -Ks
require 'jcode'
p "-1,234.5/6".tr('0-9\-.,/','0-9−.,/')
#−1,234.5/6

--
sugi


Indexへ
(10081)←【10082】→(10077)
------------------------
【タイトル】Re(4):全角数字対応
【記事番号】 10082 (10081)
【 日時 】07/08/04 11:50
【 発言者 】コジマ

▼sugiさん:
>sugiです。皆さん、こんにちは。
>
>コジマさん wrote:
>> tango.collect!{|item|hash.key?(item) ? hash[item] : item}
>
>ハッシュを使うのも良いですが jcode を利用して tr で置き換え
>る方法もあります。
>
>#! ruby -Ks
>require 'jcode'
>p "-1,234.5/6".tr('0-9\-.,/','0-9−.,/')
>#−1,234.5/6
>
>--
>sugi

アドバイスありがとうございます。
更に、簡潔になりました。
(.tr  .tr!  は、使ったことがありませんでした)


@REM 単位毎の範囲内合計
@echo off
REM #jww
REM #cd
REM #h3
REM #0合計値記入位置を指示してください free(L) Read(R)
REM #c行間(図寸) 無指定:5mm/_/a
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 > jwc_temp.txt
pause
exit
#!ruby -Ks
require 'jcode'

gyo=5.0
while ARGV.size>1
  case argument=ARGV.pop
    when /\/a/
      gyo=argument[2..-1].to_f
  end
end
suti_a={}
while ARGF.gets
  xy=split
  if xy[0]=~/^c[hsvroptkz2]/
    moji=$'.chomp if $_ =~ /\"/
        moji.tr!('0-9−.,/ー','0-9\-.,/\-')
    if moji =~ /(-*\d+,*\d*\.*\d*)([^\d]*)/
            tani=$2.chomp
            sum=($1.delete(",")).to_f
            suti_a.key?(tani) ? suti_a[tani] += sum : suti_a[tani] = sum
    end
  end
end
puts "bz"
y=0.0
suti_a.each{|key,value|
    printf("ch 0 #{y} 1 0\"%s%s\n",value,key)
    y -= gyo
}


Indexへ
(10082)←【10077】→(10079)
------------------------
【タイトル】Re(1):数値の合計
【記事番号】 10077 (10070)
【 日時 】07/08/03 22:53
【 発言者 】Kazuo Miyake qqza3hq89@aioros.ocn.ne.jp

▼自営Wさん:
>その他→表計算→範囲内合計のように(mなどは可能ですが)
>単位の付いた数値でも合計ができる外変はありませんか?

外変ではありませんが、100mm^u2 + 0.01m^u2 の範囲内合計は
 100mm^u2 + 0.01*1000000m^u2 のように あらかじめ エディタなどで単位を換算しておいて、処理する方法もあると思います。


Indexへ
(10077)←【10079】→(10084)
------------------------
【タイトル】Re(2):数値の合計
【記事番号】 10079 (10077)
【 日時 】07/08/04 09:12
【 発言者 】自営W

▼Kazuo Miyakeさん:

方法の一つとしてのお知らせありがとうございます。
m^u2は可能ですがuなどは出来ないようです。
Kg 、KW、等の単位もできればと思います。


Indexへ
(10079)←【10084】→(10085)
------------------------
【タイトル】Re(1):表計算→範囲内合計 の真価
【記事番号】 10084 (10070)
【 日時 】07/08/04 14:38
【 発言者 】コジマ

▼自営Wさん:
>その他→表計算→範囲内合計のように(mなどは可能ですが)
>単位の付いた数値でも合計ができる外変はありませんか?

よく調べてみると
表計算→範囲内合計
は、範囲選択した数値を合計するだけではありませんね。

数式の場合は、演算結果をだして合計します。
20*10 と 1500 を選択すると 合計値は 1700 になりました。

単位の付いた数値が合計できないのは、これも一因のようです。


数式計算に完全対応させるのは困難ですが(JWWの有効演算子が多すぎる為)ある程度は、可能です。

@REM 単位毎の範囲内合計
@echo off
REM #jww
REM #cd
REM #h3
REM #0合計値記入位置を指示してください free(L) Read(R)
REM #c行間(図寸) 無指定:5mm/_/a
REM #bz
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -x %~f0 temp.txt %1 > jwc_temp.txt
pause
exit
#!ruby -Ks
require 'jcode'
include Math

hash={"π"=>"PI","^u"=>"**","^"=>"**"}
array=["√","q","Q"]
gyo=5.0
while ARGV.size>1
  case argument=ARGV.pop
    when /\/a/
      gyo=argument[2..-1].to_f
  end
end
suti_a={}
while ARGF.gets
  xy=split
  if xy[0]=~/^c[hsvroptkz2]/
    moji=$'.chomp if $_ =~ /\"/
        moji.tr!('A-Za-z0-9−.,/ー÷×*+()','A-Za-z0-9\-.,/\-/**+\(\)')
        hash.each{|key,value|moji.gsub!(key,value)}
        tango=moji.split('')
        tango.collect!{|item|array.include?(item) ? "sqrt" : item}
        moji=tango.join

   if moji =~ /[^\d\(\)]*$/
            tani=$&
            suti=$`.delete(",")
        else
            tani=""
            suti=moji
        end
        sum=eval(suti)
        suti_a.key?(tani) ? suti_a[tani] += sum : suti_a[tani] = sum
   end
end
puts "bz"
y=0.0
suti_a.each{|key,value|
    printf("ch 0 #{y} 1 0\"%s%s\n",value,key)
    y -= gyo
}


Indexへ
(10084)←【10085】→(10088)
------------------------
【タイトル】Re(2):表計算→範囲内合計 の真価
【記事番号】 10085 (10084)
【 日時 】07/08/04 16:48
【 発言者 】自営W

▼コジマさん:

私の場合、範囲内合計だけで十分です。
又、数字は殆んどが半角書き込みですので
全角の場合、出来ないのに気が付きませんでした。
全角にも対応、ありがとうございました。
(欲を言えば結果数値も全角であればとの願いが・・・ゴメンナサイ)


Indexへ
(10085)←【10088】→(10094)
------------------------
【タイトル】Re(1):数値の合計
【記事番号】 10088 (10070)
【 日時 】07/08/05 18:41
【 発言者 】元丼屋店長
【 リンク 】http://gravelroad.yh.land.to/



拙作の sTotal で可能かと思います。 よろしければお試しください。

http://gravelroad.yh.land.to/category/2/subcatid/25


Indexへ
(10088)←【10094】//(10087)
------------------------
【タイトル】Re(2):数値の合計
【記事番号】 10094 (10088)
【 日時 】07/08/06 16:15
【 発言者 】自営W

▼元丼屋店長さん:

ありがとうございます。
試させて頂きましたが全角の数値には未対応のようですね。
また数値と単位が別の文字列になりますね。