Perbedaan Rata-Rata dan Arah Antara Nilai di Excel dengan Kosong

0

Saya memiliki lembaran yang terlihat seperti ini:

Lembar 1

    1   2   3   4   5   6   7   8   9   10  11
1                                           6
2                                       3   5
3                                           
4                               2   4   9   4
5                                           
6                                   4   6   6
7       5   3   3       3   10  8   4       8
8                                           
9                           4   11  12  12  6
10                                          
11  8   5   5       4   9   4   7   6       

Apa yang ingin saya lakukan adalah menemukan perbedaan rata-rata dan arah antara nilai di setiap kolom untuk setiap baris. Misalnya, 4 baris pertama akan terlihat seperti:

     Average Difference # + Movements   # -Movements
1           
2           2                    1              0
3           
4       (2+5+5)/3                2              1

Kosong mewakili nilai N / A karena informasi yang tidak memadai, dan perbedaan dihitung berturut-turut yaitu col2-col1, col3-col2, col4-col3

Jika saya hanya mengambil perbedaan dan membuat tabel duplikat dengan rumus =C2-B2 masalah lintas disalin muncul setiap kali ada ruang kosong antara dua nilai atau di awal baris. Apakah ada cara mudah untuk memperbaiki ini atau cara lain untuk melakukan ini yang mungkin saya lewatkan?

114
sumber
Tidak terlalu jelas apa yang Anda coba lakukan. Seperti apa hasil dari tabel ini? Apakah Anda mengurangi baris 3 dari baris 2 dan kemudian baris 4 dari baris 3. Kami membutuhkan detail lebih lanjut sebelum kami dapat membantu Anda.
gtwebb
@ gtwebb Terima kasih gtwebb, saya telah memperbarui posting dengan beberapa detail yang diharapkan akan membantu memperjelas situasi.
114

Jawaban:

1

Jika Anda menginginkan solusi VBA, salin ini ke modul.

Function Score(R As Range, Col As String)
    Dim ThisCell As Range
    Dim Dif As Integer
    Dim Cnt As Integer
    Dim PosMove As Integer
    Dim NegMove As Integer
    Dim PrevNum As Integer
    Dim ThisNum As Integer
    PrevNum = 9999
    For Each ThisCell In R.Cells
        If IsNumeric(ThisCell.Text) Then
            ThisNum = ThisCell.Value
            If PrevNum <> 9999 Then
                Cnt = Cnt + 1
                If ThisNum > PrevNum Then
                    Dif = Dif + (ThisNum - PrevNum)
                    PosMove = PosMove + 1
                ElseIf ThisNum < PrevNum Then
                    Dif = Dif + (PrevNum - ThisNum)
                    NegMove = NegMove + 1
                End If
            End If
            PrevNum = ThisNum
        End If
    Next
    Select Case LCase(Col)
        Case "avg"
            If Dif = 0 Or Cnt = 0 Then
                Score = 0
            Else
                Score = Dif / Cnt
            End If
        Case "pos"
            Score = PosMove
        Case "neg"
            Score = NegMove
    End Select
End Function

Maka Anda akan membuat panggilan seperti ini:

=score(A1:K1,"avg")
=score(A1:K1,"pos")
=score(A1:K1,"neg")
Tom Collins
sumber
1

Saya akan menggunakan pernyataan if untuk memeriksa apakah sel diisi

=IF(COUNT(B2:B3)=2,B3-B2,"")

Jika Anda rata-rata baris sel kosong akan diabaikan dan Anda harus mendapatkan nilai yang Anda inginkan.

Untuk meja Anda di bawah ini. Perubahan rata-rata adalah

=SUMPRODUCT(--(A2:C2<>""),--(A3:C3<>""),(A3:C3-A2:C2))/SUMPRODUCT(--(A2:C2<>""),--(A3:C3<>""))

Jumlah sel yang meningkat bisa jadi

=SUMPRODUCT(--(A2:C2<A3:C3))

Jumlah sel akan berkurang

=SUMPRODUCT(--(A2:C2>A3:C3))

Ini mengasumsikan tabel hanya selebar 3 kolom, perluas data Anda.

Sumproduct terutama digunakan untuk melakukan perhitungan array. Anda juga bisa menggunakan rumus lain menggunakan ctrl + shift + enter tetapi yang ini harus melakukan trik.

gtwebb
sumber
Maaf, saya sebutkan saya tertarik pada baris ketika saya seharusnya melihat kolom. Cukup mengubah B2: B3 ke B2: C2 dan A2: C2 ke A2: A4 seharusnya berfungsi, apakah itu benar?
114
Ya itu benar
gtwebb
Satu-satunya hal yang perlu saya sesuaikan adalah bahwa jika ada ruang kosong dan kemudian nomor lain setelah ruang kosong perbedaan itu juga perlu dihitung, tetapi dihilangkan dalam rumus itu karena hitung = / = 2.
114
0

Saya akan menggunakan Add-In Power Query untuk ini. Saya telah membuat prototipe yang dapat Anda lihat atau unduh - "Demo Power Query - pergerakan rata-rata dan perbedaan di baris.xlsx" di One Drive saya:

https://onedrive.live.com/redir?resid=4FA287BBC10EC562%21398

Power Query memiliki perintah UnPivot untuk mengubah baris menjadi kolom (yang mengabaikan sel kosong) dan Anda bisa menambahkan kolom Indeks untuk melacak posisi relatif sel. Di Pertanyaan 1 saya, saya menggunakan perintah-perintah itu untuk mengubah tabel Anda menjadi daftar panjang baris (satu untuk setiap sel).

Kemudian di Kueri ke-2 Saya menggabungkan daftar itu dengan dirinya sendiri untuk menghubungkan setiap nilai sel ke sel non-kosong berikutnya ke kiri. Lalu perhitungannya mis. Perbedaan, + Gerakan menjadi cukup mudah. Langkah terakhir adalah Mengelompokkan nomor baris dan mengumpulkan perhitungan

Akhirnya saya mulai lagi dari Input data dan Menggabungkan Query ke-2, untuk mendapatkan daftar lengkap baris (termasuk yang tidak berbeda).

Maka manfaat dari pendekatan Power Query adalah Anda tidak perlu kode di VBA, 99% dari itu dilakukan dengan mengklik di UI Power Query, atau dengan mengedit mudah untuk kode yang dihasilkan. Anda juga tidak perlu rumus bertumpuk yang rumit - Anda dapat membentuk kembali data hingga perhitungan menjadi mudah.

Perintah Power Query Unpivot sangat menakjubkan - perintah itu akan secara otomatis diperluas untuk memenuhi kolom baru jika ditambahkan ke tabel sumber, dan menghapus nilai kosong.

Mike Honey
sumber
Saya ingin melakukan ini tetapi tidak lagi disertakan dalam versi Excel saya setelah memutakhirkan ke Excel 2013.
114
Power Query adalah Add-In yang harus Anda unduh dan instal misalnya dari: microsoft.com/en-au/download/details.aspx?id=39379
Mike Honey
Saya telah membuat prototipe dan menambahkan tautan serta deskripsi yang diperbarui ke dalam jawaban saya di atas.
Mike Honey
Ya, tetapi Add-In itu hanya dapat digunakan dengan versi Excel 2013 tertentu. Hal yang sama terjadi dengan PowerPivot.
114