On 10/12/11 12:00, niva wrote:
I have some data organized by column in a buffer like that :


  ;               ;                 ; 48.00             ;
  ;               ;                 ; 32.50             ;
  ;               ;                 ; 15.00             ;
  ;               ;                 ; 59.40             ;
  ; 47.80         ;                 ;                   ;
  ; 10.90         ;                 ;                   ;
  ; 12.38         ;                 ;                   ;
  ;                  ;                 ; 35.65          ;
  ; 10.90         ;                 ;                   ;
  ; 29.99         ;                 ;                   ;
  ;                  ;                 ; 342.57        ;
  ;                  ;                 ; 400.00        ;

I would like to got the most faster method that sum each column like
done in Excel by SUM() function.

To sum column 4 (zero-based, 3), you can use:

:let s=0|g/\d/let s+=str2float(split(getline('.'), ';')[3])

which will set "s" to the sum of the given column. If for some reason you don't have N columns in each row (fewer than N-1 delimiters), you might have to change that to

:let s=0|g/\d/let s+=str2float(get(split(getline('.'), ';'), 3, 0)

to default the column-value to 0 instead of indexing too far into the results of split().

Note that this has the usual accuracy issues one normally finds with floats as mentioned at

  :help floating-point-precision

-tim




--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to