Excel如何根据某列的重新排序而进行整行的移动?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel如何根据某列的重新排序而进行整行的移动?相关的知识,希望对你有一定的参考价值。

比如第一列是名字,后面都是工资补贴等明细。
如何让后面的数据一同跟对前面的名字一同移动。
并且能结合http://zhidao.baidu.com/question/60806089.html这个需要需要更佳。

别和我说整行整行的复制,这我也知道。
因为数据量较大,所以需要快捷的方法。

如,你的姓名在A列,操作:
选中A列,点数据,排序,选择扩展选区,排序。完成。
参考技术A 方法一:选中一整行或一整列,然后剪切,插入;

方法二:选中一整行或一整列,然后鼠标移动到选中行或列的右侧,鼠标变成移动图标的时候,可以拖冻到你要放致的行或列中。
参考技术B 1、选择标题行,然后选择自动筛选;
2、另开一张表,然后使用VLOOKUP的函数,名字栏空缺,想查谁直接输名字。
参考技术C 一般的排序都整行移动的。但是有这种情况的除外:如B列整列是空白的,按A列排序,C列以后的内容是不会跟着变化的,删除B列后就跟着变化了。 参考技术D 自动筛选啊,即使某一列按升序或降序其它的也都会跟这这一行的改变而改变的。你这个简单不用公式的

获取整行的最佳方法,其中某列 = 某个值?

【中文标题】获取整行的最佳方法,其中某列 = 某个值?【英文标题】:Best way to get an entire row, where a certain column = certain value? 【发布时间】:2021-01-20 08:31:58 【问题描述】:

我想查询某列等于某个值的整行数据。

chain1 = row_filters.RowFilterChain(
    filters=[
        row_filters.ColumnQualifierRegexFilter("VOLTAGE SCREW CONVEYOR DRIVE"),
        row_filters.ValueRangeFilter(b"0.693", b"1")
    ]
)

这是我的过滤器,但这只会获取 1 个单元格。我想得到整行。任何人都知道如何实现这一点的任何主要技巧?

我设法通过两次调用 Bigtable 来实现它,但我认为它根本没有效率。

chain1 = row_filters.RowFilterChain(
    filters=[
        row_filters.ColumnQualifierRegexFilter("VOLTAGE SCREW CONVEYOR DRIVE"),
        row_filters.ValueRangeFilter(b"0.693", b"1"),
        row_filters.StripValueTransformerFilter(True)
    ]
)

rows = table.read_rows(row_set=row_set, 
                        filter_=chain1)

# Get the rowkeys
rowkeys = [row.row_key for row in rows]

# Get the rows for these rowkeys
row_set = RowSet()
for rk in rowkeys:
    row_set.add_row_key(rk)

# Final soln
rows = table.read_rows(row_set=row_set)

【问题讨论】:

【参考方案1】:

您可以使用conditional row filter,它将一个基本过滤器与一个真过滤器和一个假过滤器结合起来。如果基本过滤器发出任何单元格,则使用真过滤器,否则使用错误过滤器。按照你的例子,它会是这样的

condition = RowFilterChain(
    filters=[
        ColumnQualifierRegexFilter("VOLTAGE SCREW CONVEYOR DRIVE"),
        ValueRangeFilter(b"0.693", b"1"),
        CellsPerRow(1), // since we only need one cell to trigger the true filter
    ]
)

conditionalFilter = row_filters.ConditionalRowFilter(
    base_filter = condition,
    true_filter = PassAllFilter(), // this way you get the whole row and not just the single cell value
    false_filter = BlockAllFilter()
)

【讨论】:

【参考方案2】:

您无法使用列过滤器从 read_rows 中获取所有列。 请参阅 read_rows() 的文档:

filter (RowFilter) – (可选)应用于指定行内容的过滤器。如果未设置,则读取每一行中的每一列。

https://googleapis.dev/python/bigtable/latest/table.html

【讨论】:

【参考方案3】:

最有效的方法可能是围绕这个问题为您的表建模。 BT 不是为数据模型的灵活性而设计的——它不是 SQL。为了快速、高效地读取,不要依赖行内的条件。您应该考虑在行键中添加该值或生成一个所有数据都满足您的条件的专用表(从而消除条件)。使用过滤器会损害性能)。

引用谷歌的话: 特别是条件过滤器会增加延迟,因为条件比其他过滤器慢得多。如果您的读取请求对性能极为敏感,请不要在请求中使用条件。 (见https://cloud.google.com/bigtable/docs/filters)

【讨论】:

以上是关于Excel如何根据某列的重新排序而进行整行的移动?的主要内容,如果未能解决你的问题,请参考以下文章

Excel中,如何根据某一列的值来修改整行的颜色?

excel中选中一列进行排序如让其他列的数据跟随移动

R语言中如何删除某行某列的某个数据(注:只删一个数据而不是整列整行)?如4 行 7列

获取整行的最佳方法,其中某列 = 某个值?

Java处理excel根据某列的值查询,并将结果显示在其他列中

excel中如何根据查找某行某列的一个值,输出该值下一行的数据?