Azure Data Studio 生成的 Excel 电子表格将单元格值显示为文本不是公式执行的结果

如何解决Azure Data Studio 生成的 Excel 电子表格将单元格值显示为文本不是公式执行的结果

原始问题:

在 Azure Data Studio 中,我已将 sql 查询的结果保存到 Excel 电子表格中。当我打开电子表格时,包含公式(URL 超链接)的单元格显示为文本以显示,而不是执行公式的结果(命名的可见可点击超链接)。

这是电子表格中的前三行原始数据:

sourceTableNameA sourceTableComposedKeyA sourceTableComposedKeyA2 sourceTableNameB sourceTableComposedKeyB
FCC_ASR_LI_20210202 =Hyperlink("https://maps.google.com/maps?q=28.537266254426,-97.794735431672","C.2655506") https://maps.google.com/maps?q=28.537266254426,-97.794735431672 F3GIS_20210209 =Hyperlink("https://maps.google.com/maps?q=28.537266254426,"{F4C8C17C-0702-4B08-ABC5-7ABF0BD76BAA}")
FCC_ASR_LI_20210202 =Hyperlink("https://maps.google.com/maps?q=29.709928035737,-96.912009716035","C.616145") https://maps.google.com/maps?q=29.709928035737,-96.912009716035 F3GIS_20210209 =Hyperlink("https://maps.google.com/maps?q=29.709928035737,"{7F77EAB2-3588-4023-921F-4C009FC91Bdt>}")

解决方案 A:

点击单元格(例如:上面的 B2)然后按回车键,单元格就会变成公式的结果。

新问题:

我有 +20K 的单元格需要执行“解决方案 A”。并且手动执行“解决方案 A”+20K 次不是一种选择。

解决方案 B(勉强够用):

在投入大量时间试图解决此问题后,我发现了一个边缘解决方案。它是选择包含公式作为文本的列的内容,然后搜索/替换“=”字符。虽然这实际上将文本转换为每个单元格的实际公式,但它使每个单元格看起来像常规文本,而不是使其具有可点击链接认外观。这导致我必须手动为所有这些单元格添加下划线并选择不同的颜色。

解决方案 C(可能?):

我的第一个想法是这是 VBA 中 Excel 宏的工作。这是我所能得到的最接近的:

Public Sub Convert_To_Hyperlinks()
  Dim Cell As Range
  For Each Cell In Intersect(Selection,ActiveSheet.UsedRange)
    If Cell <> "" Then
      If Left(Cell,1) = "=" Then
        Evaluate (Cell)
      Else
        ActiveSheet.Hyperlinks.Add Cell,Cell.Value
      End If
    End If
  Next
End Sub

对于包含原始 URL(即单元格不以“=”字符开头的单元格)的单元格(例如:上面的 C2),此函数完全符合我的需要,它为每个单元格调用 ActiveSheet.Hyperlinks.Add Cell,Cell.Value,给出所需的结果。但是,检测单元格(例如:上面的 B2)是否以调用 Evaluate (Cell) 的“=”开头的代码不适用于所选单元格。

我可以使用哪些 VBA 代码来替换 Evaluate (Cell)(如果有),这会产生与解决方案 A 相同的效果

解决方法

在我参与的项目中,我发现以下内容通常就足够了:

Cell.Value = Cell.Value

美妙之处在于您可以在一行中应用范围。

使用循环应用于您的代码:

Public Sub Convert_To_Hyperlinks()
  Dim Cell As Range
  For Each Cell In Intersect(Selection,ActiveSheet.UsedRange)
    If Cell <> vbNullString Then
      If Left$(Cell,1) = "=" Then
          Cell.Value = Cell.Value
      Else
          ActiveSheet.Hyperlinks.Add Cell,Cell.Value
      End If
    End If
  Next
End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?