常用的10个 Excel 万能公式套路

更多内容关注公众号:SAP Technical 

很多同学懒的学函数,但遇到问题又不得不搜百度求高手解决。其实,有不少公式是不需要理解的,直接套用就行。今天分享10个超好用的万能公式套路,需要的赶紧收藏吧。

1、多条件判断公式

=IF(AND(条件1,条件2…条件n),同时满足条件返回的值,不满足条件返回的值)

=IF(OR(条件1,条件2…条件n),同时满足任一条件返回的值,不满足条件返回的值)

示例:同时满足金额小于500且B列内容为“未到期"时在C列输入”补款“

=IF(AND(A2<500,B2="未到期"),"补款","")

2、多条件求和、计数公式

Sumproduct(条件1*条件2*条件3…数据区域)

示例:统计A产品3月的销售合计

=SUMPRODUCT((MONTH(A3:A9)=3)*(B3:B9="A")*C3:C9)

注:和Sumifs相比速度虽然慢了点,但Sumproduct可以对数组进行处理后再设置条件,同时也可以对文本型数字进行计算,而Sumifs函数则不可。

3、多条件查找

Lookup(1,1/((条件1*条件2*条件3…)),返回值区域)

示例:如下图所示要求,同时根据姓名和工号查找职位

=LOOKUP(1,0/(B2:B6=B9)*(A2:A6=C9),E2:E6)

4、提取任意位置字符串的数字

=LOOKUP(9^9,MID(数字,MATCH(1,MID(数字,ROW(1:99),1)^0,0),ROW(1:99))*1)}

(注:数组公式,需要按Ctrl+Shift+Enter三键输入)

示例:如下图所示,提示A列中字符串中的数字

=LOOKUP(9^9,MID(A2,MATCH(1,MID(A1,ROW(1:99),1)^0,0),ROW(1:9))*1)

注:如果字符串超过100位,就把99调大

5、分离字母和汉字

汉字在前

=LEFT(单元格,LENB(单元格)-LEN(单元格))

汉字在后

=Right(单元格,LENB(单元格)-LEN(单元格))

示例:

=LEFT(A2,LENB(A2)-LEN(A2))

6、计算不重复值个数的公式

=SUMPRODUCT(1/COUNTIF(区域,区域))

示例:统计B列的客户数量

=SUMPRODUCT(1/COUNTIF(B2:B19,B2:B19))

7、金额大写转换公式

=TEXT(LEFT(RMB(单元格),LEN(RMB(单元格))-3),"[>0][dbnum2]G/通用格式元;[<0]负[dbnum2]G/通用格式元;;") & TEXT(RIGHT(RMB(单元格),2),"[dbnum2]0角0分;;整")

示例:

8、个人所得税计算公式

假如A2中是应税工资,则计算个税公式为:

=5*MAX(A2*{0.6,2,4,5,6,7,9}%-{21,91,251,376,761,1346,3016},)

9、用QQ聊天的Excel的公式

=HYPERLINK("tencent://message/?uin="&C3,"点击联系他")

10、多表同一位置汇总公式

=Sum(工作表1:工作表N!单元格地址)

示例: 如下图所示,要求在汇总表里设置合计公式,汇总前19个工作表B列的和。

B2 =SUM(Sheet1:Sheet19!B2)

今天分享的公式中,肯定有你不懂不会的。对于新手来因为基础差不需要懂,只需要会套用就行。关键在于将来用到时你得能找到。

### LeetCode Top 100 题目模式与解决方法 LeetCode 的 Top 100 经典题目涵盖了多种算法和数据结构的核心概念。以下是这些题目中的常见模式以及对应的解决方案。 #### 数据结构分类 1. **数组** 数组类问题是基础,通常涉及双指针、滑动窗口等技巧。 - 双指针用于处理有序数组或寻找特定条件下的两个数[^1]。 ```python def two_sum(nums, target): left, right = 0, len(nums) - 1 while left < right: current_sum = nums[left] + nums[right] if current_sum == target: return [left, right] elif current_sum < target: left += 1 else: right -= 1 return [] ``` 2. **链表** 链表操作常涉及到反转、删除节点等问题。 - 使用虚拟头结点简化边界情况的处理[^2]。 ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def reverse_list(head): prev = None curr = head while curr is not None: temp = curr.next curr.next = prev prev = curr curr = temp return prev ``` 3. **栈与队列** 这些数据结构适用于括号匹配、BFS 和 DFS 等场景。 - BFS 常见于图遍历或者最短路径问题[^3]。 ```python from collections import deque def bfs(graph, start_node): visited = set() queue = deque([start_node]) while queue: node = queue.popleft() if node not in visited: visited.add(node) for neighbor in graph[node]: if neighbor not in visited: queue.append(neighbor) return list(visited) ``` 4. **树** 树形结构主要考察二叉搜索树 (BST) 特性和递归实现。 - 中序遍历可以验证 BST 是否合法[^4]。 ```python def is_valid_bst(root): stack, inorder = [], float('-inf') while stack or root: while root: stack.append(root) root = root.left root = stack.pop() if root.val <= inorder: return False inorder = root.val root = root.right return True ``` 5. **动态规划** 动态规划通过子问题分解来优化复杂度。 - 背包问题是一个典型的例子[^5]。 ```python def knapsack(weights, values, capacity): dp = [[0]*(capacity+1) for _ in range(len(values)+1)] for i in range(1, len(values)+1): for w in range(capacity+1): if weights[i-1] <= w: dp[i][w] = max(dp[i-1][w], dp[i-1][w-weights[i-1]] + values[i-1]) else: dp[i][w] = dp[i-1][w] return dp[-1][-1] ``` 6. **回溯法** 回溯法适合组合、排列等相关问题。 - N皇后问题展示了如何利用剪枝减少不必要的计算[^6]。 ```python def solve_n_queens(n): result = [] cols = set(); diag1 = set(); diag2 = set() def backtrack(row, path): if row == n: result.append(path[:]) return for col in range(n): d1 = row - col; d2 = row + col if col in cols or d1 in diag1 or d2 in diag2: continue cols.add(col); diag1.add(d1); diag2.add(d2) path.append('.'*col + 'Q' + '.'*(n-col-1)) backtrack(row+1, path) cols.remove(col); diag1.remove(d1); diag2.remove(d2) path.pop() backtrack(0, []) return result ``` 7. **贪心算法** 贪心策略在某些情况下能够快速找到全局最优解。 - 区间调度是最常见的应用之一[^7]。 ```python def interval_scheduling(intervals): intervals.sort(key=lambda x: x[1]) # Sort by end time. count = 0; last_end_time = float('-inf') for start, end in intervals: if start >= last_end_time: count += 1 last_end_time = end return count ``` 8. **位运算** 位运算是高效解决问题的一种方式。 - 找到只出现一次的数字可以通过异或完成[^8]。 ```python def single_number(nums): res = 0 for num in nums: res ^= num return res ``` 9. **字符串** 字符串处理经常需要用到 KMP 或者 Manacher 算法。 - 判断回文串可以用中心扩展法[^9]。 ```python def longest_palindrome(s): if not s: return "" def expand_around_center(left, right): while left >= 0 and right < len(s) and s[left]==s[right]: left -= 1; right += 1 return s[left+1:right] longest = "" for i in range(len(s)): odd = expand_around_center(i,i) even = expand_around_center(i,i+1) longer = odd if len(odd)>len(even) else even if len(longer) > len(longest): longest = longer return longest ``` #### 总结 以上列举了一些经典的 LeetCode 解决方案及其背后的理论依据。每种类型的题目都有其独特的求解思路,掌握这些通用模板有助于提高刷题效率并加深理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值