Tag: string

Excel VBA正则expression式检查重复的string

我有一些我想validation正确性的用户input。 用户应该input一组或多组字符,用逗号分隔。 所以这些都是有效的input COM1 COM1,COM2,1234 这些都是无效的 COM – 只有3个字符 COM1,123 – 一套只有3个字符 COM1.1234,abcd – 点分隔符不是逗号 我GOOGLE了一个正则expression式模式,并find了一个可能的模式,testing任何3个字符的循环实例,我修改如此 /^(.{4,}).*\1$/ 但是这不是find匹配。 在通过testing之前,我可以pipe理最后的逗号,以便它始终在那里。 最好是我只想testing字母(任何情况)和数字,但是我可以和任何字符一起生活。 我知道我可以很容易地做到这一点在直VBA分割input一个逗号分隔符,并循环每个数组元素的每个字符,但正则expression式似乎更有效率,我会有更多的情况比有稍微不同的模式,所以参数化的正则expression式那会更好的devise。 TIA

Excel数据连接locking访问数据库,防止第二个连接的刷新

我有两个数据连接到同一Access数据库中的不同查询。 第二个总是失败(不pipe我先跑哪个)。 当我查看数据库时,我注意到它有一个locking文件,我认为这是造成问题的原因。 它保持locking,直到我closuresExcel文件。 任何人都可以帮我解锁数据库一旦我的导入完成? 附加信息: 我正在使用Excel和Access 2010。 错误: “文本文件说明” MyQuery链接规范“不存在,您不能使用该规范导入,导出或链接。 连接string( 注意:我正在使用命令types:表 ): Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin ;Data Source=A:\folder\folder\My Database.accdb ;Mode=Share Deny None ;Extended Properties="" ;Jet OLEDB:System database="" ;Jet OLEDB:Registry Path="" ;Jet OLEDB:Engine Type=6 ;Jet OLEDB:Database Locking Mode=0 ;Jet OLEDB:Global Partial Bulk Ops=2 ;Jet OLEDB:Global Bulk Transactions=1 ;Jet OLEDB:New Database Password="" ;Jet OLEDB:Create System Database=False ;Jet […]

隐式转换为string/string内部插入的string

所以我偶然发现了以下几点: Console.WriteLine(currentRow["Projekt"]); Console.WriteLine($"{currentRow["Projekt"]}"); Console.WriteLine($"{(string)currentRow["Projekt"]}"); 输出: > Data that i want > Namespace.ExcelDataField > Data that i want 在ExcelDataField中,我明显是我写的一个类来帮助我从Excel工作表中读取数据。 我尝试使用MoveFirst / Next类似于VBAs DAO访问,并始终公开1行数据(currentRow)。 我使用ExcelDataField类来封装Excel数据表中的数据,因为数据是从excel表单中导出的。 public class ExcelDataField<T> { private Excel.Range m_XlRange; private int m_Row; private int m_Col; public T Data { get { return (T)(this.m_XlRange.Cells[this.m_Row, this.m_Col] as Excel.Range)?.Value2; } set { this.m_XlRange.Cells[this.m_Row, this.m_Col] = value; } […]

对于每个控制variables必须是变体或对象

真的很新的VBA在这里…我环顾四周,试图拼凑一些代码,以满足我的需要。 认为它几乎在那里,但我得到的错误可能容易克服,但我不知道如何。 代码查看当前工作表(STOCK),并从单元格A2获取“目标”文本值。 然后它在另一个表“其他”中search一个命名范围。 如果确定Other中的其中一个单元格('cand')等于目标值,则在原始目标的同一行上的STOCK表格的G列将应用“True”值。 希望这是有道理的。 我已经复制了代码,这可能会让事情更清楚。 Dim target As String Dim cand As String Dim currentrow As Integer Sub search_named_range()'这个范围是硬编码的; 我们可以尝试A:如果硬编码版本工作'对于每个目标在工作表(“STOCK”)。范围(“A2:A1000”)'检索当前范围的行,用于设置目标值'currentrow =范围(target).Row'FOR循环searchMojave中零件编号的范围'For Each cand In Worksheets(“Other”)。Range(“N9:N150”)如果StrConv(cand.Value,2)= StrConv(target, 2)然后工作表(“STOCK”)。范围(“G”+ currentrow)=“真”转到前端如果下一步cand'如果部分没有find,什么都不做,返回find下一个目标'FORend:Next target End Sub 目前,我收到错误“对于每个控制variables必须是变体或对象”,但无法find任何解释为什么这是。 我相信这是很明显的,但一个steer将非常​​感激。 谢谢。

在VBA中search包含小数的数字的string

所以我正在从一个相当笨重的数据库input一个项目,我可以控制它给我的数据types。 它基本上给我一个string,其中包含小数的数字。 “每天口服0.5片 ”。 每当它说选项卡,我想抓住之前的数字选项卡,并将其转换为双格式。 我知道如何使用cdbl来转换它,一旦我有string“0.5”,但我怎么得到这个string是有点困难,因为InStr只从左到右search。 我的想法是使用InStr来find前面的单词“标签”之前的数字空间,但我无法弄清楚如何编码。 有什么build议么?

如何从“lastName,firstName”切换到“firstName姓氏”的string?

我有一个充满名字的列写成: “姓氏,名字” 我想有一个名字列表写成这样的列: “名字姓氏” 那么,怎样才能从“lastName,firstName”切换到“firstName LastName”?

在使用Excel的字母数字string中出现某些字母的总和

我在应用程序testing中使用了一系列字母数字数据,由于某些原因,我需要计算每个string中从“a”到“f”的字母出现总和 (这将用于进一步的数据处理): 02599caa0b600 –> should be 4 489455f183c1fb49b –> should be 5 678661081c1h 66410hd2f0kxd94f5bb 8a0339a4417 f6d9f967ts4af6e 886sf7asc3e85ec 03f1fhh3c3a2am e491b17638m60 1m8h2m07bhaa4tnhbc4 29ma900a80m96m65 ca6a75f505tsac8 956828db8ts7fd1d cf1d220a59a7851180e a8b7852xd9e7a9 b85963fbe30718db9976 39b8kx8f85abb1b6 0xxb3b648ab a8da75f730d45048 588h69d344 这是string的样子,它们的长度大约是10-30个符号,我想每天有3-5K个字符用于处理。 假设和限制: 信件的情况并不重要(愉快)。 字母列表可能有一天会改变,但很有可能仍然是一个范围 ,如ak,dg等 – 因此解决scheme应该尽可能地灵活。 任何临时计算/范围都是不被禁止的,但越短越好。 我更喜欢纯粹的Excel解决scheme,但如果它太复杂 – VBA仍然是一个select。 不过,复杂的Excel公式比“2行代码”VBA更好 – 如果第一个按预期工作的话。 我已经尝试过的东西(正如我注意到的那样,这里的练习非常受欢迎): 通过已经回答的问题search,但没有发现任何类似的基于Excel的解决scheme。 其他语言/方法不是一个选项(VBA除外)。 目前为止,我自己做的最好的事情是嵌套SUBSTITUTE函数,但它很脏,很直接。 假设范围可能会变成cx这将是一场噩梦。 我不是Excel的新手,但像复杂的数组公式仍然是我的坚果 – 唉,但真的… 无论如何,我并不要求“准备好”“现成”的解决scheme – 我寻求帮助和正确的方向/方法进行自我学习和进一步理解类似的问题。

除非分隔符被转义,否则使用分隔符分割

我正在阅读来自Excel使用的剪贴板数据 var stream = (System.IO.Stream) ( Forms.Clipboard.GetDataObject() ).GetData( Forms.DataFormats.CommaSeparatedValue ); , 但不幸的是,excel传递单元格文本而不是单元格值。 当单元格使用特殊的格式(如千分位数)时,剪贴板中的一系列单元格的数据如下所示: 1,234,123.00 2,345.00 342.00 12,345.00 存储为: \" 1,234,123.00 \",\" 2,345.00 \", 342.00 ,\" 12,345.00 \" 当我真正想要的是这样的: 1234123.00, 2345.00, 342.00, 12345.00 我以前曾经使用clipData.Split(new string[] { "," }, StringSllitOptions.None))函数将我的CSV剪贴板数据转换为一系列单元格,但是当包含逗号的格式化文本转义失败时,将失败。 我问是否有人可以想办法将这个string拆分成一组单元格,而忽略在\"位\"内转义的逗号,因为这是Excelselect转义包含逗号的单元格的方式。 总之,我怎样才能把一个单一的string包含这个: \" 1,234,123.00 \",\" 2,345.00 \", 342.00 ,\" 12,345.00 \" 转换为包含以下内容的string数组: { "1,234,123.00", "2,345.00", "342.00", "12,345.00" […]

使用公式在Excel单元格中设置文本的子集

我已经使用Excel中的公式build立了一个string。 举个例子 单元格C3包含文本“语言” 单元格C4 =“英文,西class牙文,德文,法文” 我的论坛= C3&“:”&CHAR(10)&C4 期望的文本将是: 语言: 英文,西class牙文,德文,法文 (其中粗体文本实际上是一些像红色的颜色) 有没有办法在Excel中执行此操作(更改部分文本格式)。 我试过一个公式…(不工作) Function formatText(InText As Range) 'Set font color InText.Characters(1.5).Font.Color = Red 'InText.Characters((InStr(1, ":", InText) + 1), (Len(InText) – InStr(1, ":", InText))).Font.ColorIndex = 3 End Function

是否有可能在一个Excel单元格中做多个彩色的文本?

我有strInfostring,其中包含“员工John Maybach”。 我如何使“员工”部分成为黑色文本,“约翰·迈巴赫”部分是红色的? “员工”部分将始终保持不变,但员工姓名部分将会改变,使其可能是由2部分组成的名称(John Doe),或3部分的名称(John Allen Doe),或者只是名字(约翰)。 我希望单词“员工”始终是黑色的,但单元格中名称部分的其余部分是红色的。 这可能吗?