Tag: 词典

Excel VBA – 将不同的值映射到实体

在Excel中,我有一个如下所示的表格。 这些人有几个人和几千个工作单。 这是一个演示表格: 我想要的VBA是一个数据结构,映射每个人的工作量和总收入。 所以我们知道乔纳森做了3份工作,赚了400美元。 前 (Key) – >(Value,Value) (人) – >(工作数量,总金额) 我需要上面的数据透视表的值,但不想在VBA中绘制数据透视表只是为了得到这些值。 所以我的问题是:一个 – 我怎样才能写一个字典或集合,这在VBA中是这样做的,而且两个字典是最有效的方法。 即有更好的方法吗?

使用Dic在VBA中查找匹配和更新列

我试图用Dictionary来完成下面的任务:(不要问为什么:P,我刚刚find了这个方法,并开始使用它,并没有注意其他的可能性,欢迎任何更好的方法) 在表格“DRG”中检查栏AE中的字母“TRUE”。 如果find了,那么将表格“DRG”的列E中的值与表格“延迟”的列表R中的值进行比较。 如果在“延迟”表中find匹配项,并且在工作表DRG中的值为“TRUE”,则更新“延迟”表中ColS中的文本“IP”。 我有下面的代码,并不知道在哪里包括比较工作表“Latency”的Col R和表“DRG” 我的代码 Sub IPFinder() Dim cl As Range, Dic As Object Set Dic = CreateObject("Scripting.Dictionary"): Dic.Comparemode = vbTextCompare With Sheets("Latency") For Each cl In .Range("R2:R" & .Cells(Rows.Count, "C").End(xlUp).Row) If Not Dic.exists(cl.Value) Then Dic.Add cl.Value, cl.Row Next cl End With With Sheets("DRG") For Each cl In .Range("AE2:AE" & .Cells(Rows.Count, "A").End(xlUp).Row) If […]

Excel – 如果A1有'xyz',用'www.dictionary.com/browse/a1'填充B1,其中B1中的超链接指的是xyz,而不是简单的B1

意图是在Excel中创build一个字典数据库。 在A1中input一个值应该用“www.dictionary.com/browse/A1”填充B1 – 挑战在于B1内的超链接值应该指向“www.dictionary.com/browse/A1”(A1内的实际值)

在Excel VBA中,根据字典值删除Excel中的行

我仍然进入VBA,目前我正在尝试执行以下操作: – 根据存储在字典中的值删除Excel工作表中的行。 我有这个代码: For Each Key In dict.Keys i = Key Cells.Rows(i).Delete Next 在那之前我已经填写了字典。 这个想法是“密钥”存储了存储特定值的所有行号,例如“1”。 随着每个我想要删除存储在字典中的所有行,但是一旦你删除Excel中的一行数量的变化。 例如,字典中的第一个存储值是5,因此每个将删除第5行。字典中的第二个值是10,现在当for each尝试删除第10行时,它将删除第10行原来的文件曾经是第11行。基本上每个都不能删除正确的行。 正如我所说,我是VBA的新手,我甚至不确定这是否是正确的方法,或者在这种情况下比词典更好。 我期待听到您的意见和build议。 先谢谢你! 更新:由Ambie和sktneer解决。 检查答案。

VBA:如何将一列完整字典转换为每个字母一列?

我有一个完整的字典。 所有的字(360 000)都在一列中。 我想要列B的所有单词以“a”开始,列C以b开始的所有单词… 我正在尝试做一个循环或什么…但是…它太长了。 有小费吗? 还是有人已经做这个vbamacros? 韩国社交协会, 斯特凡。

VBA词典不添加值

我试图编写一个函数来search某个列(称为列A)的术语“请求”。 一旦find该行,它将search同一行中的另一列(称为列B)以获取唯一的字词。 我们的目标是计算B列中有多less独特的术语与A列中的术语“请求”相对应。我试图做到这一点的方法是创build一个字典并添加一个术语,如果该术语尚不存在在字典里。 该程序计算了词典中添加了多less条款,因此我知道有多less条特殊条款。 然而,我现在的代码只是不断地在词典中添加每一个词,而不pipe该词是否已经存在或不存在。 我一直在试图找出一段时间,不能完全弄清楚。 代码如下: j = 0 For i = 1 To LastRow If Cells(i, 13).Value Like "Request" Then Set dic = CreateObject("Scripting.Dictionary") If Not dic.exists(Cells(i, 13)) Then ucount = ucount + 1 dic.Add j, Cells(i, 13) j = j + 1 End If End If Next i 我认为这个问题可能与dic.Addfunction有关,但我不确定。 我对VBA和一般编码都比较陌生。

什么对象没有被正确设置或引用?

Private Sub UserForm_Initialize() Call CreateDictFromColumns("Schedule", "A", "B") Dim dic As Dictionary Set dic = createdDic For Each k In dic.Keys MsgBox dic(k) Next With ListBox1 .AddItem "test" End With End Sub 'http://stackoverflow.com/questions/33523658/what-is-the-easiest-way-to-take-two-columns-of-data-and-convert-to-dictionary Function CreateDictFromColumns(sheet As String, keyCol As String, valCol As String) As Dictionary Dim aDict As Dictionary Set aDict = New Dictionary Dim rng […]

在字典中记数,运行代码时效果不佳,添加检查效果不错

奇怪的问题。 通过检查代码,给我正确的答案。 只是运行它不。 该程序遍历列中的每个单元格,search正则expression式匹配。 当它发现一些东西时,检查一个相邻的列中它属于哪个组,并且保持一个计数。 例如:组3:7,组5:2,组3:8 只是单步执行代码给了我最后的结果不正确,但是添加和检查字典中的每个已知的项目都有诀窍。 每个Dictionary(键)使用Debug.Print来检查每个循环中有多less项目也给我一个很好的输出。 正确//在运行代码之后真正的hamp Group1:23 // Group1:23 Group3:21 // Group3:22 Group6:2 // Group6:2 Group7:3 // Group7:6 Group9:8 // Group9:8 Group11:1 // Group11:12 Group12:2 // Group12:21 Sub Proce() Dim regEx As New VBScript_RegExp_55.RegExp Dim matches Dim Rango, RangoJulio, RangoAgosto As String Dim DictContador As New Scripting.Dictionary Dim j As Integer Dim […]

将命名区域复制到活动工作表

我试图从Wk1工作表中复制命名的范围到工作簿中的活动工作表。 我在运行代码时不断收到错误消息。 他们要么说没有设置对象,要么variables没有被声明。 Sub ChangeNamedRangesOnNewWKsheet() Dim RangeName As Name Dim HighlightRange As Range Dim RangeName2 As String Dim NewRangeName As String Dim Ws As Worksheets Dim cs As Worksheet Set cs = Application.ActiveSheet ''''' Delete invalid named ranges For Each RangeName In ActiveWorkbook.Names If InStr(1, RangeName.RefersTo, "#REF!") > 0 Then RangeName.Delete End If Next RangeName […]

在用户窗体上使用一个button来获得一个variables并继续子

我在excel中有一个用户窗体,其中一个combobox使用另一个窗体的范围编译下拉菜单。 我已经使用范围内的字典定义了下拉列表,并强制combobox进行匹配(这样做是为了确保用户在添加新组件之前尝试查找公司)。 但是,我希望他们能够在需要的时候添加新公司,因此有一个标签为“添加公司”的button,现在需要将他们input的公司添加到列表/字典中,有什么想法? 我想避免必须启动一个全新的用户表单,最好我想到一个input框on_click的button,但我不知道如何强制该variables回到原来的用户窗体。 我目前的代码是: Private Sub UserForm_Initialize() Dim Acctsht As Worksheet Dim ValSet Dim FinanInst Dim objFinanInst As Object Dim objAcctType As Object Dim objNickname As Object Dim objFourDig As Object Dim objAcctClass As Object Dim objDescript As Object Dim CompanyDict As New Scripting.Dictionary Dim Tempsht As Worksheet Dim NewCompTemp As String Set Acctsht […]