2012-05-11 95 views
0

好吧..我试了一整天来解决这个问题,现在我要求帮助如何在Excel中更新单元格中输入

我有:在Excel中,我输入101的值单元格A1。在它旁边,在单元格B1中,我有一个下拉列表,显示A1的单位。现在是帕所以我有(101 |帕)

我想要什么:我改变B1下拉列表自动取款机,我想它在A1单元格值自动更新到1 |大气压。

我有一个解决方法,需要另一个单元格供用户输入,然后根据B1进行更新,但这不是那么干净和专业。

我希望你能理解我的问题。

你的意见是赞赏。

感谢

+0

你想要的号码输入单元与格式化数量和单位?所以B1是一个单位的选择,但是在A1中你会显示数字加一个管道加单位?所以你的期望我会认为是格式化后的A1到101 | Pa和用户选择A1将数字更新为102时,您不希望在编辑时在那里显示“| Pa”部分。总之,我试图理解你的目标。 – Mirko

+0

当一个数字输入到A1时单位是什么,将是真正的值。然后,更改B1将相应地更新A1。例如,如果某人不想使用英寸而是厘米,则他们将在A1中输入值1,并将B1设置为英寸。然后,当您将B1更改为厘米时,它将更新为2.54 |厘米。 – Programmer

+0

我认为使用VBA对此有点过分热心。可能所有你需要的是一个很好的公式和可能的参考表。我想我知道你在做什么,但我需要更多的信息。从英寸转换到厘米很简单,但101到PA和1到ATM让我感到困惑。你能提供下拉菜单中的内容以及应该返回的相应值的完整列表吗? –

回答

1

你会需要一些VBA这一点。

使用更改事件时,单位将转换为检测,更新工作簿模块将这个初始值

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim OldUnit As Variant 
    Dim NewUnit As Variant 
    Dim ConversionFactor As Double 
    If Target.Cells.Count = 1 And Target.Column = 2 Then 
     ' Save new units 
     NewUnit = Target 
     ' prevent recalling this code when we update cells 
     Application.EnableEvents = False 
     ' Get old units 
     Application.Undo 
     OldUnit = Target 
     ' put new units back on sheet 
     Target = NewUnit 
     ' work out your conversion factor based on old and new units 
     ConversionFactor = 0.5 ' for testing 
     ' update value 
     Target.Offset(0, -1) = Target.Offset(0, -1) * ConversionFactor 

     Application.EnableEvents = True 
    End If 
End Sub 
+0

谢谢Neilsen先生,你太棒了! – Programmer

相关问题