吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1443|回复: 15
收起左侧

[学习记录] EXCEL宏

  [复制链接]
yk156511 发表于 2023-12-14 14:13
Function FindColumnByKeyword(keyword As String) As Integer
    Dim cell As Range
    Dim columnNumber As Integer
    columnNumber = 1
   
    For Each cell In Range("A:Z")
        If cell.Value Like "*" & keyword & "*" Then
            FindColumnByKeyword = columnNumber
            Exit Function
        End If
        columnNumber = columnNumber + 1
    Next cell
   
    FindColumnByKeyword = 0  ' 返回0表示未找到
End Function


任意一个单元格,不知道他的列号,只知道单元格里面的内容,除了宏,有函数能实现吗。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
autoyou + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小白白兔 发表于 2023-12-14 14:38
我没太理解你的意思,随便写了点,你自己看看对不对吧!
def search(data, target):
    """
    在表格中查找指定的内容,并返回该单元格的行数列数
    """
    for i, row in enumerate(data):
        for j, value in enumerate(row):
            if value == target:
                return (i+1, j+1)
    return None
wapjsx 发表于 2023-12-14 14:39
所能想到的就是用python的 xlwings 或 openpyxl 或 pandas 或xlutils等库来实现。
dtsuifeng 发表于 2023-12-14 14:46
kurama1982 发表于 2023-12-14 14:48
在Excel中,没有内置的函数可以直接根据单元格内容查找列号。但是,您可以使用一些内置函数的组合来实现此功能。

下面是一个使用公式的示例,可以根据单元格内容查找列号:

=MIN(IF(A:Z=A1,COLUMN(A:Z),9999))

请注意,这是一个数组公式,需要使用Ctrl+Shift+Enter键盘组合来输入和计算。

这个公式将在A到Z列中查找与A1单元格内容相匹配的值,并返回第一个匹配单元格所在的列号。如果没有找到匹配项,它将返回9999或任何您认为合适的值。

请将A:Z替换为您实际的数据范围,并将A1替换为您要查找的单元格。

注意:此方法仅适用于小范围的数据,因为它需要遍历整个数据范围。如果您的数据范围很大,这种方法可能会导致性能问题。

如果您需要更高效的解决方案,可能需要编写自定义宏或使用其他编程语言(如VBA、Python等)来处理此任务。
wkdxz 发表于 2023-12-14 14:50
Vba 有个 Find函数,效率比遍历单元格更高
jyjjf 发表于 2023-12-14 14:59
你这个是模糊匹配,不好弄
DominickFu 发表于 2023-12-14 15:22
excel
都有宏了
文西思密达 发表于 2023-12-14 15:32
match 和 find 组合用就可以
LemonMs 发表于 2023-12-14 16:22
虽然不会弄,但是提供个思路:把整个表读到数组里,查找匹配的内容,然后根据数组的上标、下标确定单元格的行列号,即位置
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表