我很难弄清楚如何将动态范围传递到公式中。
通常我会有一个场景,我知道我的范围将在哪一列中(如下例所示),其中LR是我的范围中的行数。
Range("A1:A" & LR).FormulaR1C1 = ....some formula here
当我必须使用(在我的例子中)列标题名称动态创建一个范围时,问题就开始了。我可以通过标题名称找到列,获取列号,将其转换为字母,但我尝试的任何解决方案都不起作用。
这是我用来获取列号的方法:
Function getColumn(searchText As String, wsname As String) As Integer
我正试图在VBA中创建一个超级VLOOKUP函数,并且我已经使它在同一张纸内工作得很好,但我似乎无法通过其他书籍来理解它。
基本上,这个函数有三个参数:查找值、查找表和返回列。
查找值用于匹配查找表中的每个单元格,当找到匹配时,它将在匹配单元格行的返回列中从单元格返回值。
这是我的代码:
Function SUPERLOOKUP(lv As Range, lt As Range, rc As Range)
Dim cell As Range
Dim output As String
For Each cell In lt
If cell.Value = lv Then
我需要得到我在excel表中创建的逻辑列的字母。
当我点击一个单元格,假设H7有数据23,我可以得到Te excel列H,但出于某些商业目的,我想要A,也就是第5行中对应于一个单元格的字母,selected.If假设它是56,我想要B。
图2显示了为什么我想要B而不是excel列I,因为如果我插入一个列,我的excel列字母将会改变,但是B中逻辑列字母对应的数字将只保留在B中。我可以使用以下代码获取excel列字母:
Public Function ColumnLetters(rInput As Range) As String
ColumnLetters = Split(rInput.Add
我有一个电子表格,当C-K列更新时,我需要B列自动填充日期和时间。还有比K更远的列,我不想触发更新代码。
首先,我使用了以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
i = Target.Row
Dim t As String
t = VBA.Now
Cells(i, 2) = t
End Sub
这对我的情况不起作用,因为它会针对行中的任何更改进行更新。这样做的好处是用户不能在这些单元格上键入内容,从而阻止VBA输入更新的日期。
要仅为选定的行启用触发器,我转到以下代码:
Private
在我的工作簿中,我用宏创建了一些图表,图表从工作表"FG_Count“获得数据。但我不知道如何编写宏,因为它总是使用正确的列。
图的数据在B3 / D3 / F3 / H3范围内,图是用for -循环创建的。
这里是我创建图表的宏。
Private Sub CommandButton1_Click()
Dim v
Dim a As Integer
For Each s In ActiveWorkbook.Sheets
If s.Visible = True Then
v = v + 1
End If
是否有一种方法可以在不使用VBA的情况下在表格的"B“列中自动编号?( "A“和"B”的密度是任意的;唯一的规则是大炮是两个或两个以上的‘排’,而"A“总是第一个。)
A
B 1
B 2
B 3
A
B 1
B 2
A
B 1
B 2
B 3
如果需要的话,一些辅助计算(列)是可以的。
任务的扩展是。
我的数据集包含特定位置的汽车。生成位置的程序通常给出一个字母(如"A“、"B”或"C")。但是,有时它会显示"road road“作为位置。出于格式化的目的,我想从VBA脚本的字符串中删除"road along“。这确实需要在VBA中完成,因为我的数据集非常大。
这是一个例子(汽车4):
我试过了:
If Instr(Location, "road along")>0 Then
replace("road along","")
Else Do Nothing
End If
我想要创建一个宏,它找到一个列标题并选择该标题下面的所有内容。但是,我不想使用.end(xldown),并且希望使用.end(xlup)来防止出现空列的问题。但我遇到了一个问题,即标题所在的列是动态的。
我环顾四周,发现了一个使用split查找列字母的代码:
Sub Macro1()
Dim rngHeader As Range
Dim rngHeadReq As Range
Set rngHeader = Range("A1:AL1")
Set rngHeadReq = rngHeader.Find("Adjustment Operation Type")
我在试着让一个循环开始工作。
我需要做的是遍历一个表,如果A列中的地址匹配有一个值,如果地址的所有实例都在W列中有值,那么GoTo end_nothing。如果只有某些匹配项在W列中有数据,则继续使用sub。
我在代码中遇到的问题是,它匹配的第一个条目是退出子条目,而不对其余条目进行循环。
我的守则:
Private Sub CommandButton3_Click()
Dim add_WIR_check, lastRow_WIR As Long
Dim address_Check As String: address_Check = sheets("Auto Checklist
我希望使用列字符串名称而不是列字母/数字标识符在VBA中定义范围。我现在是这样做的:
Dim objectRange As range
Set objectRange = AMPTab.range("C2", AMPTab.range("C" & AMPTab.Rows.Count).End(xlUp))
从上面的代码中,我基本上将C2列中的所有内容(直到列中最后一个非空单元格)设置在AMPTab工作表中,相当于一个称为objectRange的范围。
没有使用"C2“和"C",有什么方法可以使用列标题吗?例如,列C的标题为"
我有一份报告,其中我必须在最后一栏和第二栏之间插入一个新列。但是,当我试图插入该列时,会出现类型不匹配错误。
Dim columnInsert As Range
Dim rangeAverage As Range
Set columnInsert = Range("X80:X95")
Set rangeAverage = Range("AA1")
Columns(columnInsert:rangeAverage).Insert Shift:=xlToRight
编辑指出的问题是这一行:
Columns(columnInsert:rangeAverage).
我在Excel中使用的工作簿有一些受保护的单元格。我无法解锁它们。我需要将数据从一个被锁定的列传输到另一个也被锁定的列。我可以手动输入数据,但是工作簿将不允许我在受保护的列中复制/粘贴数据(无论是使用VBA还是正常方式)。下面是我尝试过的代码示例,没有任何结果。
如果不打开工作簿,这甚至是可能的吗?
示例1:
Sub Requote()
Dim JDsheet As Worksheet
Set JDsheet = ActiveWorkbook.ActiveSheet
JDsheet.Range("Q26:R41").Copy JDsheet.Range("S26:T
我在VBA中遇到了一个问题,就是有一行代码抛回了一个错误。
宏的作用是查找特定的单元格,然后将数据粘贴到其中。
代码如下:
'To find Column of Customer imput
For Each cell In Range("B4:M4")
If cell.Value = strLeftMonth Then
DataImportColumn = cell.Column
End If
Next
For Each cell In Worksheets("data customer mon
我有一张值,我想与VBA进行排序。我想按一个特定的标题按降序(反向字母)排序。我的床单是这样的:
A B C
1 Date Opened Date Closed Status
2 07/12/17 07/15/17 closed
3 07/16/17 open
计算列C的值,以便如果“日期关闭”列中没有任何内容,则状态将自动设置为“打开”。
我希望使用VBA按C列按字母顺序对表进行排序,以便打开的票出现在已关闭的票之前。这是我尝试使用的VBA:
Sub Sort_Status()