Excel中VBA中使用表替换的简单密码
我想在Excel中编写一个简单的密码,从一个单元格中提取一个文本,用相邻列中的一个数字替换每个字母,然后将输出放入另一个单元格中。无法让VLOOKUP工作-它作为一个公式工作,但不知何故无法让它在VBA代码中工作。首先尝试对一个字符执行一个简单的过程(稍后添加循环会很容易),但不起作用。它可以编译,但当我运行它(按下我分配给它的按钮)时,结果单元格中会出现“#N/a”Excel中VBA中使用表替换的简单密码,vba,excel,Vba,Excel,我想在Excel中编写一个简单的密码,从一个单元格中提取一个文本,用相邻列中的一个数字替换每个字母,然后将输出放入另一个单元格中。无法让VLOOKUP工作-它作为一个公式工作,但不知何故无法让它在VBA代码中工作。首先尝试对一个字符执行一个简单的过程(稍后添加循环会很容易),但不起作用。它可以编译,但当我运行它(按下我分配给它的按钮)时,结果单元格中会出现“#N/a” Sub Zakoduj() Dim Literka As String Dim Liczba As Variant Dim C
Sub Zakoduj()
Dim Literka As String
Dim Liczba As Variant
Dim ColumnToTake As Integer
ColumnToTake = 1 ' Liczby
On Error Resume Next
Err.Clear
Literka = Sheets("Sheet2").Range("B2").Value
Liczba = Application.VLookup(Literka, Sheets("Sheet1").Range("A5:B39"), ColumnToTake, False)
If Err.Number = 0 Then
Sheet2.Range("B6").Value = Liczba
Else
Sheet2.Range("B6").Value = Err.Number
End If
End Sub
该范围包含以下数字和字符:
Kod Litera
16 A
73 B
12 C
40 D
70 E
etc. etc.
找不到解释如何执行此操作的教程…这是一个修改版。请注意,表1中A1:B6中的数值
Option Explicit
Sub Zakoduj()
Dim Literka As Integer
Dim Liczba As String
Dim ColumnToTake As Integer
ColumnToTake = 2 ' Liczby
Literka = Sheets("Sheet2").Range("B2").Value
Liczba = "Value not found" 'If value is not found
On Error Resume Next
Liczba = Application.WorksheetFunction.VLookup(Literka, Sheets("Sheet1").Range("A1:B6"), ColumnToTake, False)
On Error GoTo 0 'Always reset error handling after On Error Resume Next
Sheet2.Range("B6").Value = Liczba
End Sub
Application.worksheetfunction.VLookup
在VLookup之前和之后,您是否已经完成了步骤,尝试删除错误陷阱到,我认为该函数可能会失败,而不是返回n/a?您的列不是回到前面了吗?您当前的VLookup
正在您名为Kod
的列中查找从工作表(“Sheet2”).Range(“B2”).value
中获得的值,但听起来好像您想从名为Litera
的列中查找,因此您可能需要切换这些列。(您还将返回第一列中的值,因此,如果出现匹配,您将返回与查找的值相同的值-您可能希望将列设置为2
)您也可以尝试,因为它们确实经过了优化。这些示例设置了replace函数来替换您的密码,以寻求帮助。但是,它仍然不起作用。。。调用VLookup后,“Liczba”不会从“未找到值”更改。我不知道为什么,因为一切都是正确的-范围等好的,明白了!Vlookup只查找第一列!VLookup查找指定范围的第一列,并从ColumnToTake指定的下一列中获取值。如果将ColumntToTake设置为1,则将获得与输入相同的输出。