如何解决链接两个不同的 Excel 表并在填充另一个时自动填充一个
我有两个不同的 excel 格式的表格,一个靠近另一个。第一个表格(绿色标题)是一个表格,我必须在 A 列中添加一些化学式,而 B 列将是我将从第二个表格(黄色标题)中添加的所有化合物的总和,它代表元素周期系统!>
我在表 2(黄色标题)中用于计算化合物的公式是这样的:
=C$2*MAX(IFERROR(IF(FIND(C$1&ROW($1:$99);MolM.[@[Mol. Formula]]);ROW($1:$99);0);0);IFERROR(IF(FIND(C$1&CHAR(ROW($65:$90));MolM.[@[Mol. Formula]]&"Z");1;0);0)) (CSE formula)
我通常对新化合物进行更新的内容和方式是,我在 A 列中手动添加新化学式(没关系),然后拖动表 2(黄色标题)中的主要公式来计算所有元素,以及然后在 B 列中求和以获得主要结果!
我的问题是,是否有可能更自动化,只是当我在 A 列中输入新化合物时,它会像普通表格一样展开,但也会自动展开并计算其余化合物,而无需拖动手动公式..?
希望这已经足够清楚了。
有没有可能做到这一点?唯一的解决方案是 Power Query 还是?
解决方法
我在这里胡乱猜测。
假设您在 A3
中写入 NH3,然后让它在 I2
中打印 I3
(“N”的值),以及 C2
* 3(“H”的值)次 3,“H3”)在 C3
中。然后让 B3
用 =SUM() 或类似方法计算总值。
您可以有一个 VBA 子程序来查找值并打印它。 这是它的原型:
Sub molFunc(chem As String,formRow As Long)
Dim i As Long,c As String,atoms As Range,a as Range
Set atoms = Range("C1",Cells(1,Columns.count).End(xlToLeft))
For i = 1 To Len(chem)
If Not Mid(chem,i + 1,1) = UCase(Mid(chem,1)) Then
c = Mid(chem,i,2)
i = i + 1
Else
c = Mid(chem,1)
End If
For Each a In atoms
If a.Value = c Then
If IsNumeric(Mid(chem,1)) Then
a.Offset(formRow - 1).Value = a.Offset(1) * Mid(chem,1)
Else
a.Offset(formRow - 1).Value = a.Offset(1)
End If
End If
Next a
Next i
End Sub
然后您可以从您选择的工作表中的 Worksheet_Change
事件中调用它。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target,Range("A:A")) Is Nothing And Target.count = 1 Then
Application.EnableEvents = False
Call molFunc(Target.Value,Target.Row)
Application.EnableEvents = True
End If
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。