在以下公式中帮我添加如果在B列查找到平面度字样,则直接在C和D列中查找对应值,如果在B列查找到的点位在C列对应每组数值时为一样,则使用D列的值,如果D列的值一样则使用C列的值,如果未找到平面度字样则正常计算 =IFERROR( VLOOKUP(LOWER(AL$8), INDIRECT("B" & MATCH(":BEGIN",$B:$B,0)+$AK9*COUNTA($B:$B) / IFERROR(COUNTIF($B:$B,":BEGIN"),1) - COUNTA($B:$B) / IFERROR(COUNTIF($B:$B,":BEGIN"),1) &":C" & MATCH(":END",$B:$B,0)+$AK9 * COUNTA($B:$B) / IFERROR(COUNTIF($B:$B,":BEGIN"),1)), 2,FALSE ), "无数据")
时间: 2023-06-20 14:04:35 浏览: 44
=IFERROR(IF(ISNUMBER(FIND("平面度",B9)),IF(C9=D9,D9,C9), VLOOKUP(LOWER(AL$8), INDIRECT("B" & MATCH(":BEGIN",$B:$B,0)+$AK9*COUNTA($B:$B) / IFERROR(COUNTIF($B:$B,":BEGIN"),1) - COUNTA($B:$B) / IFERROR(COUNTIF($B:$B,":BEGIN"),1) &":C" & MATCH(":END",$B:$B,0)+$AK9 * COUNTA($B:$B) / IFERROR(COUNTIF($B:$B,":BEGIN"),1)), 2,FALSE)), "无数据")
这个公式会首先检查B列是否包含"平面度"字样,如果包含,则直接在C列和D列中查找对应值,并选择其中不同的值作为结果。如果C列和D列的值相同,则选择C列的值作为结果。如果B列中未找到"平面度"字样,则执行原本的VLOOKUP公式进行正常计算。
相关问题
python excel sheet2中C列交易F列金额 sheet1中Q列房号R列户主T列微信名O列金额,C列中有QRT三列里的词语,需要C列查找QRT其中相同词语把F列金额放到O列金额
可以使用 Python 的 pandas 库来实现这个需求。具体步骤如下:
1. 读取 sheet1 和 sheet2 的数据,可以使用 pandas 的 read_excel() 方法。
2. 在 sheet2 的 C 列中查找包含 Q、R、T 列中的词语的行,可以使用 pandas 的 str.contains() 方法。
3. 根据查找结果,将 sheet2 中对应行的 F 列金额填入 sheet1 中对应行的 O 列金额。
4. 将修改后的数据写入新的 Excel 文件中,可以使用 pandas 的 to_excel() 方法。
下面是示例代码:
```python
import pandas as pd
# 读取 sheet1 和 sheet2 的数据
df1 = pd.read_excel('file.xlsx', sheet_name='sheet1')
df2 = pd.read_excel('file.xlsx', sheet_name='sheet2')
# 在 sheet2 的 C 列中查找包含 Q、R、T 列中的词语的行
q = df2['C'].str.contains('|'.join(df1['Q']))
r = df2['C'].str.contains('|'.join(df1['R']))
t = df2['C'].str.contains('|'.join(df1['T']))
mask = q | r | t
# 根据查找结果,将 sheet2 中对应行的 F 列金额填入 sheet1 中对应行的 O 列金额
df1.loc[mask, 'O'] = df2.loc[mask, 'F']
# 将修改后的数据写入新的 Excel 文件中
df1.to_excel('new_file.xlsx', index=False)
```
需要注意的是,上述代码中的文件名和列名需要根据实际情况进行修改。另外,如果 Excel 文件中含有多个 Sheet,需要根据实际情况修改 read_excel() 和 to_excel() 方法的参数。
用VBA实现下面的业务:1. 对M变量列,从MN(N为行变量)单元格开始,到最大的行数的单元格区间的每一个单元格,按字符变量c分割单元格内的字符串,形成字符数组arri, 2. 遍历数组arri,若数组元素的值在名为xxx工作簿的A列里,则设置该值为N列对应行的值,
Sub SeparateAndCheck()
Dim c As String '分割用的字符变量c
c = ","
Dim lastRow As Long '最大行数
lastRow = Cells(Rows.Count, "M").End(xlUp).Row
Dim i As Long '循环变量
For i = 13 To lastRow '从第13行开始循环,因为MN位置是第13行
Dim cellValue As String
cellValue = Cells(i, "M").Value '取出M列每个单元格的值
Dim arr() As String
arr = Split(cellValue, c) '按c字符分割值,生成数组
Dim j As Long '循环变量
For j = LBound(arr) To UBound(arr) '遍历数组,从第一个元素到最后一个元素
Dim checkValue As String
checkValue = Trim(arr(j)) '去掉元素值两端的空格
Dim wb As Workbook
Set wb = Workbooks("xxx工作簿.xlsx") '打开名为xxx工作簿的工作簿
Dim ws As Worksheet
Set ws = wb.Worksheets("Sheet1") '打开该工作簿的名为Sheet1的工作表
Dim findRng As Range
Set findRng = ws.Range("A:A").Find(What:=checkValue, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) '在A列查找checkValue
If Not findRng Is Nothing Then '如果找到了checkValue
Dim rowNum As Long
rowNum = findRng.Row '获取该值所在的行数
Cells(i, "N").Value = rowNum '将该值所在行的值赋给M列对应行的N列
End If
Next j
Next i
End Sub