我几乎无处不在,无法找到答案; R等价于Excel上的VLOOKUP.VLOOKUP允许我在整个列中查找特定值并将其应用于我的数据框的每一行.
在这种情况下,我想找到一个特定城市所在的国家(来自数据库)并在新列中返回该国家/地区的名称.
所以我有这个数据库:
countries <- c("UK", "US", "RUS")
cities <- c("LDN", "NY", "MOSC")
db <- cbind(countries, cities)
db
countries cities
[1,] "UK" "LDN"
[2,] "US" "NY"
[3,] "RUS" "MOSC"
Run Code Online (Sandbox Code Playgroud)
并且想要根据上面的数据库找到这些城市所在的国家(替换NA):
df
countries cities
[1,] NA "LDN"
[2,] NA "NY"
[3,] NA "MOSC"
Run Code Online (Sandbox Code Playgroud)
我完全不知道如何在R.
首先,我不认为VLOOKUP对我有用,因为我在每个表中有几十列.
假设我有表1:
Serial# Value1 Value2 Value3 Value4
1 4 34 65 23
2 123 43 54 46
3 87 98 85 34
4 654 8 645 3
表2:
SF
1
3
4
我想根据SF中的序列号过滤表1.
Serial# Value1 Value2 Value3 Value4
1 4 34 65 23
3 87 98 85 34
4 654 8 645 3
使用a VLOOKUP意味着我必须为每个要填充的列编写公式.我想避免这种情况.
谢谢
我正在尝试检查A列中有多少字符串与B列中的字符串大致匹配.
例:
如果我在B列中有字符串"angry_birds_iph_app",并且"angry_birds_iph_app"和"angry_birds_adrd_app"出现在A列的某处,我希望该函数返回2.
在我的程序中,用户输入邮政编码并获取与邮政编码(省、市、区)相关的输出信息。为此,我使用 Vlookup 函数。所以,用户:
我使用这段代码来执行此操作:
If Range("J9").Value <> "N/A" Then 'if there is actually a zip code entered by the user (if not, it will be "N/A")
cityZip = Application.WorksheetFunction.VLookup(sMain.Range("J9").Value,
sZipCodes.Range("B2:E864"), 3, False)
barangayZip = Application.WorksheetFunction.VLookup(sMain.Range("J9").Value,
sZipCodes.Range("B2:E864"), 2, False)
provinceZip = Application.WorksheetFunction.VLookup(sMain.Range("J9").Value,
sZipCodes.Range("B2:E864"), 4, False)
sMain.Range("J7").Value = provinceZip
sMain.Range("J13").Value = cityZip
sMain.Range("J16").Value = barangayZip
Else
End If
Run Code Online (Sandbox Code Playgroud)
当我的数据库中有邮政编码时,它可以完美地工作。但如果没有,它会导致程序的执行崩溃,并且出现错误消息(例如“执行错误'1004',无法读取 Vlookup ...)。如何修改我的代码以仅说明如果没有匹配项,那么它应该什么也不做?我不知道如何在 Vlookup 函数中引入这个请求。
提前致谢 !
编辑:这是我的新代码,遵循蒂姆·威廉姆斯的建议:
'Using Zip Code
If Range("J9").Value <> "N/A" Then
provinceZip = Application.Lookup(sMain.Range("J9").Value, sZipCodes.Range("B2:E907"), 4, …Run Code Online (Sandbox Code Playgroud) 基本上,我尝试使用条件格式图标集,即绿点、橙点和红点。
如果我的值小于我的公式值,则显示绿点。
如果我的值等于我的公式值,则显示橙色点。
如果我的值大于我的公式值,则显示红点。
这是我尝试使用的确切公式:
VLOOKUP(product_ID,product_db,3,FALSE)
Run Code Online (Sandbox Code Playgroud)
product_ID是我尝试应用条件格式的单元格旁边的单元格。product_db是另一个工作表中的一个大表。
虽然,当我尝试使用它时,格式根本没有应用于我的单元格。不显示任何点。
我相信这是因为我的公式。有任何想法吗?
编辑:
以下是正在发生的事情的一些屏幕截图:
这是调理前的数量:

这是条件反射,其公式为:=VLOOKUP(invoice_product,PRODUCT_DATABASE,3,FALSE)

数量与第一张图像完全相同,没有变化。我的公式应返回的值为 2,因此应显示橙色点。
我有一张包含混合格式数据(日期、双精度、字符串等)的工作表。我在lookup_range中搜索值(my_index),并且我想检索数据以更改其他工作表中的单元格。它工作正常,但是当 VLookup 返回的值是日期并且我将其设置到另一张表时,它会丢失其日期格式。
Dim lookup_range As Range
Dim my_index, my_value As Variant
my_value = Application.VLookup(my_index, lookup_range, num_col, False)
Sheets(3).Cells(num_row, last_col_s1 + num_col - 1).Value = my_value
Run Code Online (Sandbox Code Playgroud)
因此,当lookup_range中的数据是02/05/2014sheet-3中显示的数据时,看起来像41761。
我需要保留lookup_range中数据的原始数据格式。
我在一张纸上的一列中有一个值列表。在另一张纸上我有两列。一个是通配符列表,另一个是另一个值列表。在第一张工作表上的列旁边,我想要一个附加列来包含一个公式,该公式将根据第二张工作表中的通配符检查第一列中的值。如果找到匹配项,则应显示该通配符旁边的值。
有什么办法可以做到这一点吗?已经研究了好几个小时了,但我无法让它工作。
提前致谢。
一些示例数据:
第一张
A栏
随机不必要的数据有用的123信息更多垃圾
更多随机的东西重要456垃圾垃圾垃圾
重要456还有很多垃圾
更多垃圾有用的东西789INFO垃圾
B栏
<some formula>
<some formula>
”
”
ETC。
第二张
A栏
*usefulthings???INFO*
*important456*
B栏
有用的东西 - 信息
重要 456
我想<some formula>对照工作表 2 中的表格检查其旁边的工作表 1 列 A 中的值。如果工作表 2 列 A 中的通配符之一匹配,则包含公式的单元格应显示工作表 2 列 B 中的内容。
我有一张谷歌表格,其中包含不同玩家攻击的数据及其相应的伤害。
表1
| Player | Attack | Damage |
|:------------|:-----------:|------------:|
| Iron Man | Melee | 50 |
| Iron Man | Missile | 2500 |
| Iron Man | Unibeam | 100 |
| Superman | Melee | 9000 |
| Superman | Breath | 200 |
| Superman | Laser | 1500 |
Run Code Online (Sandbox Code Playgroud)
在我的第二张表中,我想列出每个玩家并显示他们的最佳攻击和相应的伤害。像这样:
表2
| Player | Best attack | Damage |
|:------------|:-----------:|------------:|
| Iron Man | Missile | 2500 |
| Superman | Melee | 9000 …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过使用 Vlookup 填充列来计算从图纸计划到图纸结果的组件数量,具有:
Count_col: 是工作表中的总列 PlanLast_col: 是工作表中的总列Result(在添加列需求之前)工作表结果
| 材料 | 成分 | 需求W1 | 需求 W2 |
|---|---|---|---|
| ABCD1000 | NC200 | #姓名? | #姓名? |
图纸计划
| 材料 | 需求W1 | 需求 W2 |
|---|---|---|
| ABCD1000 | 1000 | 200 |
For i = 1 To count_col
Cells(1, i + last_col).Value = "=Plan!RC[-2]"
Cells(1, i + last_col).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,Plan!C1:C15,i+1,0)"
Next i
Run Code Online (Sandbox Code Playgroud)
但结果是名称错误,我检查了函数的拼写是否正确,不知道如何修复。为什么我的公式中有“@”?
错误详情
=VLOOKUP($A2,Plan!$A:$O,@i+1,0)
Run Code Online (Sandbox Code Playgroud) 我有一个手动输入的数字列表:
1
100
100
10
1
1000
10
1000
1
1000
100
10
Run Code Online (Sandbox Code Playgroud)
我想获取运行最大值 - 初始数字数组的每个子数组的最大值。我所说的子数组是指从[A1]到[A2]、从[A1]到[A3]、从[A1]到[A4]等的数字。
结果如下:
1
100
100
100
100
1000
1000
1000
1000
1000
1000
1000
Run Code Online (Sandbox Code Playgroud)
可以将更多条目添加到初始号码列表中。
使用赏金答案,这是一个 100500 行的速度测试:
这不包括最新答案
vlookup ×10
excel ×7
vba ×3
max ×2
approximate ×1
arrays ×1
excel-2011 ×1
excel-2013 ×1
formatting ×1
match ×1
r ×1
string ×1
wildcard ×1