将xyz数据input到电子表格中

我有第1页的3列x,y和z中的excel数据。这些是az值的坐标。 我想将z值放在Excel电子表格第2页的正确的x,y坐标网格中。 例如,在x = 2,y = 3,z = 5的情况下,表2的单元格b3中的数据应该是5.原始数据包括若干个search点。 所有在Excel中!

UPD:

如果您可以确认表2上的所有z坐标都有对应的xy (即,当您尝试查找单元格b3 z坐标时没有任何情况,并且sheet1中没有x=2y=3对),那么您可以在sheet2上使用这个公式:

=SUMPRODUCT((Sheet1!$A:$A=Row())*(Sheet1!$B:$B=Column()),Sheet1!C:C)

否则,如果您无法确认表2上的所有z坐标都有对应的xy ,请使用以下公式:

=IF(COUNTIFS(Sheet1!$A:$A,ROW(),Sheet1!$B:$B,COLUMN()),SUMPRODUCT((Sheet1!$A:$A=ROW())*(Sheet1!$B:$B=COLUMN()),Sheet1!$C:$C),"not found")

在这两个公式中, Sheet1!C:C是在sheet1, Sheet1!A:A上的z坐标的拼接Sheet1!A:ASheet1!B:B是sheet1上的xy坐标的拼接。

这个任务最好用VBA进行,就像这样:

 Sub Demo() Dim wf As WorksheetFunction Dim wsSrc As Worksheet Dim wsDst As Worksheet Dim rSrc As Range Dim rdst As Range Dim vSrc As Variant Dim vDst As Variant Dim i As Long Set wsSrc = Sheet1 Set wsDst = Sheet2 Application.ScreenUpdating = False Set wf = Application.WorksheetFunction ' Get a reference to the source data With wsSrc Set rSrc = Range(.Cells(1, 3), .Cells(.Rows.Count, 1).End(xlUp)) End With ' Validate source data If wf.Floor(wf.Min(rSrc.Range("1:2")), 1) <= 0 Then MsgBox "Invalid data, contains co-ordinates <= 0" Exit Sub End If ' Copy Source to a variant array vSrc = rSrc.Value ' Prepare Destination sheet wsDst.Cells.Clear With wsDst Set rdst = Range(.Cells(1, 1), .Cells(wf.Max(rSrc.Columns(2)), wf.Max(rSrc.Columns(1)))) End With ' Populate destination sheet For i = 1 To UBound(vSrc, 1) rdst.Cells(CLng(vSrc(i, 2)), CLng(vSrc(i, 1))) = vSrc(i, 3) Next Application.ScreenUpdating = True End Sub 

请注意,我已经使用直接写入循环中的目标工作表而不是一个Variant数组,通常我不会这样做。 在这种情况下,目标是一个很大,稀疏的数组。 根据最大x,y值,这可能会导致内存不足错误。 testing几个1000个数据点,运行几秒钟(OP说几百个数据点)