LibreOffice Calc spread sheet:查找每条街道的最高门牌号并仅显示这些行
LibreOffice Calc spread sheet: Find highest house number, for each street and show those rows only
我使用 Lubuntu Linux 和 LibreOffice Calc 传播 sheet 软件。
我有一个很大的地址列表,用于整个城镇,作为 LibreOffice Calc Spread sheet。
这些行通常看起来像这样
..
15 Mike Street
17 Mike Street
5 Busy Street Drive
13 Busy Street Drive
2 Busy Street Drive
4 Busy Street Drive
6 Busy Street Drive
25 Morray Street
27A Morray Street
27B Morray Street
29 Morray Street
31 Morray Street
33 Morray Street
60 Morray Street
62 Morray Street
64 Morray Street
110 Green Road
112 Green Road
116 Green Road
118 Green Road
120 Green Road
122 Green Road
..
以上每一行占据一个单元格(即房屋/公寓号未拆分为不同的单元格)。
对于人口统计调查,我需要找出每条街道上有多少房屋/公寓。我的近似方法是通过确定每条街道中最高的门牌号来评估每条街道的数字。所以我想要一个脚本或宏,它将上面的列表排序为如下所示
..
17 Mike Street
13 Busy Street Drive
64 Morray Street
122 Green Road
..
我在传播中有 8,000 行左右sheet所以我必须自动执行此操作。
我使用 LibreOffice Calc,无法访问 excel。 (如果需要,我可以为适当的 SQL 查询设置/创建一个 mySQL 数据库,尽管我已经很久没有做这样的事情了,而且我不确定我是否有空重新学习该设置过程)。
有人知道我如何在 LibreOffice Calc 中自动执行此操作吗?
Bash 编写 csv 文件的脚本,可能有效,但我不知道如何。
谢谢。
我无法告诉您如何在 LOC 中自动执行此操作,但如果您要在 MySQL 中执行此操作,那么类似以下的方法可能会起作用...
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(address VARCHAR(30) NOT NULL PRIMARY KEY
);
INSERT INTO my_table VALUES
('15 Mike Street'),
('17 Mike Street'),
('5 Busy Street Drive'),
('13 Busy Street Drive'),
('2 Busy Street Drive'),
('4 Busy Street Drive'),
('6 Busy Street Drive'),
('25 Morray Street'),
('27 Morray Street'),
('29 Morray Street'),
('31 Morray Street'),
('33 Morray Street'),
('60 Morray Street'),
('62 Morray Street'),
('64 Morray Street'),
('110 Green Road'),
('112 Green Road'),
('116 Green Road'),
('118 Green Road'),
('120 Green Road'),
('122 Green Road');
SELECT MAX(SUBSTRING_INDEX(address,' ',1)+0) max_no
, SUBSTRING(address,LOCATE(' ',address)) street
FROM my_table
GROUP
BY street;
+--------+--------------------+
| max_no | street |
+--------+--------------------+
| 13 | Busy Street Drive |
| 122 | Green Road |
| 17 | Mike Street |
| 64 | Morray Street |
+--------+--------------------+
我使用 Lubuntu Linux 和 LibreOffice Calc 传播 sheet 软件。
我有一个很大的地址列表,用于整个城镇,作为 LibreOffice Calc Spread sheet。 这些行通常看起来像这样
..
15 Mike Street
17 Mike Street
5 Busy Street Drive
13 Busy Street Drive
2 Busy Street Drive
4 Busy Street Drive
6 Busy Street Drive
25 Morray Street
27A Morray Street
27B Morray Street
29 Morray Street
31 Morray Street
33 Morray Street
60 Morray Street
62 Morray Street
64 Morray Street
110 Green Road
112 Green Road
116 Green Road
118 Green Road
120 Green Road
122 Green Road
..
以上每一行占据一个单元格(即房屋/公寓号未拆分为不同的单元格)。
对于人口统计调查,我需要找出每条街道上有多少房屋/公寓。我的近似方法是通过确定每条街道中最高的门牌号来评估每条街道的数字。所以我想要一个脚本或宏,它将上面的列表排序为如下所示
..
17 Mike Street
13 Busy Street Drive
64 Morray Street
122 Green Road
..
我在传播中有 8,000 行左右sheet所以我必须自动执行此操作。
我使用 LibreOffice Calc,无法访问 excel。 (如果需要,我可以为适当的 SQL 查询设置/创建一个 mySQL 数据库,尽管我已经很久没有做这样的事情了,而且我不确定我是否有空重新学习该设置过程)。
有人知道我如何在 LibreOffice Calc 中自动执行此操作吗?
Bash 编写 csv 文件的脚本,可能有效,但我不知道如何。
谢谢。
我无法告诉您如何在 LOC 中自动执行此操作,但如果您要在 MySQL 中执行此操作,那么类似以下的方法可能会起作用...
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(address VARCHAR(30) NOT NULL PRIMARY KEY
);
INSERT INTO my_table VALUES
('15 Mike Street'),
('17 Mike Street'),
('5 Busy Street Drive'),
('13 Busy Street Drive'),
('2 Busy Street Drive'),
('4 Busy Street Drive'),
('6 Busy Street Drive'),
('25 Morray Street'),
('27 Morray Street'),
('29 Morray Street'),
('31 Morray Street'),
('33 Morray Street'),
('60 Morray Street'),
('62 Morray Street'),
('64 Morray Street'),
('110 Green Road'),
('112 Green Road'),
('116 Green Road'),
('118 Green Road'),
('120 Green Road'),
('122 Green Road');
SELECT MAX(SUBSTRING_INDEX(address,' ',1)+0) max_no
, SUBSTRING(address,LOCATE(' ',address)) street
FROM my_table
GROUP
BY street;
+--------+--------------------+
| max_no | street |
+--------+--------------------+
| 13 | Busy Street Drive |
| 122 | Green Road |
| 17 | Mike Street |
| 64 | Morray Street |
+--------+--------------------+