如何将c#函数转换为excel
我不熟悉excel中的函数(我是c#开发人员)。 我的老板让我写一个函数,但我对excel(VBA?)一无所知 问题是: 1个xlsx文件,带有2个选项卡: 每个选项卡包含一个包含3列的表: 名称、id、yesOrNo(字符串)如何将c#函数转换为excel,excel,Excel,我不熟悉excel中的函数(我是c#开发人员)。 我的老板让我写一个函数,但我对excel(VBA?)一无所知 问题是: 1个xlsx文件,带有2个选项卡: 每个选项卡包含一个包含3列的表: 名称、id、yesOrNo(字符串) “a”选项卡中的yesOrNo(字符串)列为空(首先) 我需要用“b”选项卡中表格中的数据填充它 表“a”: 选项卡“b”: •每个表中可能有很多行 函数需要这样做(我将用c#编写一个伪代码): •a=选项卡a •b=选项卡b •a.name=选项卡“a”列“
- “a”选项卡中的yesOrNo(字符串)列为空(首先) 我需要用“b”选项卡中表格中的数据填充它
•a=选项卡a
•b=选项卡b
•a.name=选项卡“a”列“name”
函数ab(){
对于(i=2;i
最后,选项卡a中的表将如下所示:
有没有办法把c代码转换成vba?
我应该在哪里写代码呢?我想这就是你想要的
Option Explicit
Sub Test()
Dim lastrowA As Long
Dim lastrowB As Long
Dim rowA As Long
Dim rowB As Long
Dim nameA As String
Dim nameB As String
' Get last row on sheet A
lastrowA = Worksheets("A").Cells.Find("*", SearchOrder:=xlByRows, searchdirection:=xlPrevious).row
' Get last row on sheet B
lastrowB = Worksheets("B").Cells.Find("*", SearchOrder:=xlByRows, searchdirection:=xlPrevious).row
' For each row on sheet A
For rowA = 2 To lastrowA
' Get name (A)
nameA = Worksheets("A").Cells(rowA, 1).Value
' For each row on sheet B
For rowB = 2 To lastrowB
' get name (B)
nameB = Worksheets("B").Cells(rowB, 1).Value
' if name (B) starts with name (A)...
If Mid(nameB, 1, Len(nameA)) = nameA Then
' Update yes or no
Worksheets("A").Cells(rowA, 3).Value = Worksheets("B").Cells(rowB, 3).Value
' Exit inner for loop
Exit For
End If
Next rowB
Next rowA
End Sub
你应该在哪里写代码?(1) Alt+F11打开VBA编辑器。(2) 在项目管理器中,右键单击“插入模块”。(3) 将代码粘贴到新模块中
您可以通过(1)选择开发人员选项卡,(2)单击宏按钮,(3)选择宏并单击运行来运行它。这就是我最终解决此问题的方法:
- 单击要显示结果的列
- 写出这个公式
=XLOOKUP(B1,'b'!b:b,'b'!C:C)
xlookup(您不想搜索的值、要搜索的位置、要显示的结果)
- 答案基于我在问题正文中添加的图像
- 请确保您已安装XLOOKUP,我根据以下视频下载了它:
**我不知道为什么它还没有安装,我使用的是office 2019。所以选项卡A变成了选项卡B的副本?不。我需要复制
yesOrNo(string)
列,根据我用伪代码编写的条件,结果看起来像最后一张图片(例如)如果我没弄错的话,我是说结果只是制表同意。。有两个选项卡a
和b
我的意思是结果只是基于选项卡中的数据。我的老板对我说,这太复杂了,他认为如果我使用函数xlookup,我可能可以在一行代码中完成。。有什么办法吗?“用一行代码做”不是最初的问题,如果是的话,我就不会费心回答了。对不起,我不知道xlookup
函数的存在,它在c#中不存在。。再次抱歉-如果可能的话,我将尝试使用xlookup
找到方法。
Option Explicit
Sub Test()
Dim lastrowA As Long
Dim lastrowB As Long
Dim rowA As Long
Dim rowB As Long
Dim nameA As String
Dim nameB As String
' Get last row on sheet A
lastrowA = Worksheets("A").Cells.Find("*", SearchOrder:=xlByRows, searchdirection:=xlPrevious).row
' Get last row on sheet B
lastrowB = Worksheets("B").Cells.Find("*", SearchOrder:=xlByRows, searchdirection:=xlPrevious).row
' For each row on sheet A
For rowA = 2 To lastrowA
' Get name (A)
nameA = Worksheets("A").Cells(rowA, 1).Value
' For each row on sheet B
For rowB = 2 To lastrowB
' get name (B)
nameB = Worksheets("B").Cells(rowB, 1).Value
' if name (B) starts with name (A)...
If Mid(nameB, 1, Len(nameA)) = nameA Then
' Update yes or no
Worksheets("A").Cells(rowA, 3).Value = Worksheets("B").Cells(rowB, 3).Value
' Exit inner for loop
Exit For
End If
Next rowB
Next rowA
End Sub