乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 74|回复: 9

[编程交流] 表中的自动求和单元格

[复制链接]

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:12:12 | 显示全部楼层 |阅读模式
大家好
我正在寻找lisp,它可以通过单击我想要的单元格来计算单元格的总和。
 
我有很多表,我必须为每一列求和
 
对每一张桌子都这样做是很困难的
 
一些开放??!!
 
对不起我的英语
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:20:25 | 显示全部楼层
谷歌应该找到一个答案,但如果你想通过lisp在单元格上求和,你可以得到表格的最后一行数,然后问下有多少间隙,并在该单元格中加入求和函数。我没有答案,但肯定有人会的。
 
很确定这是类似于vla get rows是在表的底部。需要标题信息,还需要从总行中减去。我会检查单元格中的值,这样就可以得到真正的最后一个值,但需要检查所有列。如果输入的行号大于表,则添加行,然后添加总和公式。
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:26:39 | 显示全部楼层
谢谢你。
 
还有其他想法吗
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 16:34:50 | 显示全部楼层
我将你的帖子转移到AutoLISP、Visual LISP和DCL论坛。
回复

使用道具 举报

2

主题

261

帖子

20

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-5 16:39:33 | 显示全部楼层
试试看。
但这不是lisp,不是vba。这个程序。
SumTable。拉链
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:52:05 | 显示全部楼层
有一点时间,所以我想我会有一个Lisp程序,虽然信贷李安布罗修斯得到细胞选择。
 
只需选择要求和的列单元格顶部,这是非常多的版本1,因为我可以看到接下来的几个问题。
 
我确信使用entsel可以更好地处理pick单元格。
 
  1. ;; Example shows how to pick a single table cell on screen and change its value.
  2. ;; This example demonstrates the ActiveX properties/methods HitTest,
  3. ;; GetCellType, GetText and SetText.
  4. ;; original code by Lee Ambrosius 2015
  5. (defun SelectTableCell ( / pick vHeight vWidth lwrLeft uprRight vector
  6.                                           SS_TABLES cnt eMax  cellValueOrg)
  7. ;; Ask the user for a point on screen
  8. (if (/= (setq pick (vlax-3d-point (getpoint "\nSelect Cell to START sum from: "))) nil)
  9.    (progn
  10.      ;; Get the corners of the screen display to build our selection set
  11.      (setq vHeight (getvar "viewsize"))
  12.      (setq vWidth (* (/ (nth 0 (getvar "screensize")) (nth 1 (getvar "screensize"))) vHeight))
  13.      (setq lwrLeft (list (- (nth 0 (getvar "viewctr")) (/ vWidth 2)) (- (nth 1 (getvar "viewctr")) (/ vHeight  2)) 0))
  14.      (setq uprRight (list (+ (nth 0 (getvar "viewctr")) (/ vWidth 2)) (+ (nth 1 (getvar "viewctr")) (/ vHeight  2)) 0))
  15.      ;; Get the current display orientation
  16.      (setq vector (vlax-make-safearray vlax-vbDouble '(0 . 2)))
  17.      (vlax-safearray-fill vector '(1 1 1))
  18.      (setq vector (vlax-make-variant vector))
  19.      
  20.      ;; Select all the table objects visible on screen
  21.      (if (setq SS_TABLES (ssget "C" lwrleft uprright (list (cons 0 "ACAD_TABLE"))))
  22.        (progn
  23.   
  24.          (setq cnt 0
  25.                eMax (sslength SS_TABLES)
  26.          )
  27.          ;; Step through all the items in the selection set
  28.          (while (> eMax cnt)
  29.            ;; Geta table object from the selection set
  30.            (setq tableObj (vlax-ename->vla-object (ssname SS_TABLES cnt)))
  31.            ;; Return values for what cell was picked in
  32.            (setq row 0
  33.                  col 0)
  34.            ;; Below is also a sample to see if a valid cell is picked
  35.            ;; (vla-select table pick vector vector 5 5 :vlax-false 'row 'col)
  36.    
  37.            ;; Check to see if a valid cell was picked
  38.            (if (= (vla-hittest tableObj pick vector 'row 'col) :vlax-true)
  39.              (progn
  40.                ;; Get out of the loop
  41.                (setq cnt (1+ eMax))
  42.                ;; Check to see what the Cell Type is (Text or Block)
  43.                (if (= (vla-GetCellType tableObj row col) acTextCell)
  44.                                    ;; Let's get the value out exit with row - col
  45.                    (setq cnt eMax)
  46.                 )
  47.              )
  48.            )
  49.            (setq cnt (1+ cnt))
  50.          )
  51.        )
  52.      )
  53.    )
  54. )
  55. (princ)
  56. ) ; defun
  57. ; A is chr 65
  58. (defun addsum-table ( / tableObj row rows col cols )
  59. (SelectTableCell)
  60. (setq rows (vla-get-rows tableobj))
  61. (setq cols (vla-get-columns tableobj))
  62. (alert (strcat (rtos rows 2 0) " " (rtos cols 2 0)))
  63. (vla-InsertRows tableobj rows (vla-GetRowHeight tableobj (1- rows)) 2);; 3 number of rows
  64. (setq rows (- (vla-get-rows tableobj)1 ))
  65. ; do a re alpha row column here
  66. (SETQ ALPHA (CHR (+ 65 COL )))
  67. (setq ans (strcat "=sum" "(" ALPHA (RTOS ROW 2 0) ":"ALPHA (RTOS ROWS 2 0) ")"))
  68. (vla-settext tableobj rows col ans)
  69. )
  70. (addsum-table)
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:57:43 | 显示全部楼层
我想把所有列相加到“TOTAL”下面的单元格中
该表不总是7行,它可以是任意数量的行
171218uuzb07rmgb096ban.jpg
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:03:39 | 显示全部楼层
这很好。但我希望它是autocad的,而不是外部窗口
把总和写在我想要的单元格里
回复

使用道具 举报

2

主题

261

帖子

20

银币

初来乍到

Rank: 1

铜币
8
发表于 2022-7-5 17:08:03 | 显示全部楼层
esam指定您正在联系的人。
阅读此线程,它可以方便地快速修复:
http://www.cadtutor.net/forum/showthread.php?101028-这段代码真正的成本是多少
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:14:04 | 显示全部楼层
以撒你看过我贴的吗?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 21:07 , Processed in 0.638571 second(s), 74 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表