[[20150825181344]] 『一覧の作成』(ゆき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『一覧の作成』(ゆき)

初心者です。教えて頂けますでしょうか。

Sheet1

  A       B        C       D        E        F       D
玉ねぎ 100      卵     200   無塩バター   250
人参  125    ごま油  212
しらす 250

Sheet1に入力を行ってSheet2に記入したものだけを表示することって可能でしょうか?

Sheet2
  A      B
玉ねぎ     100   
卵        200   
無塩バター   250
人参      125    
ごま油     212
しらす     250

こんなかんじに表示したいです。

又、Sheet1のしらすの下等に追加すると自動的にSheet2に追加されるようにしたいのですが教えて頂けますでしょうか。

< 使用 Excel:Excel2010、使用 OS:Windows8 >


 関数での回答が出るまでのつなぎで。

 20:00 Sheet1のイベントからSheet2のイベントにコード変更。

 Sheet2のシートタブを右クリックしてコードの表示。でてきた場所に以下を貼り付け、右上のXボタンでシートに戻り
 SHeet1 のデータ追加変更を行って、Sheet2を見てください。

 Private Sub Worksheet_Activate()
    Dim r As Range
    Dim w As Variant
    Dim x As Long
    Dim j As Long

    With Sheets("Sheet1").Range("A1").CurrentRegion
        ReDim w(1 To Int(.Cells.Count / 2), 1 To 2)
        For Each r In .Rows
            For j = 1 To .Columns.Count Step 2
                If IsEmpty(r.Cells(j)) Then Exit For
                x = x + 1
                w(x, 1) = r.Cells(j).Value
                w(x, 2) = r.Cells(j + 1).Value
            Next
        Next
    End With

    UsedRange.ClearContents
    Range("A1").Resize(UBound(w, 1), UBound(w, 2)).Value = w

 End Sub

(β) 2015/08/25(火) 19:55


すいません。シート1は1行目に項目を入れたいので2行目からの入力でしたいのですがどうすればよいでしょうか?
(ゆき) 2015/08/25(火) 20:35

度々すいません。
2行目からは出来たのですが、

Sheet2

   A      B 
玉ねぎ     100  
人参      125       
 卵       200 
ごま油     212 
しらす     250   
無塩バター   250 

の順番に表示をしたいです。
よろしくお願いします。

(ゆき) 2015/08/25(火) 20:59


 ??

 新しい表示順のルールは?
 言葉で説明いただけますか?

(β) 2015/08/25(火) 21:38


 一応作業列を使った式を立ててみたがわかりづらい。

 C列を作業列とする。

 A1:=IFERROR(INDEX(Sheet1!$A$2:$F$10,100-LEFT(RIGHT(C1,4),2),100-RIGHT(C1,2)),"")
 B1:=IFERROR(INT(C1),"")
 C1:=IFERROR(SMALL(IFERROR(IF(Sheet1!$A$2:$F$100="","",Sheet1!$A$2:$F$100)+(1-(ROW($2:$100)-1)/100)+(0.01-(COLUMN($A:$F)-1)/10000),""),ROW(A1)),"")

 C1セルは式を確定する際にShiftキーとCtrlキーを押しながらEnterキーで確定してくれ(確定後、式が{}で囲まれればOK)
 A1セル・B1セルは通常通りEnterで。

 その後下へフィルコピーで。
 金額の昇順で並べ、同じ金額の場合はより左のものを、同じ列の場合はより上のものを先に表示する。

 なお、列はF列目まで、行は100行目までを対象とする。
(ねむねむ) 2015/08/26(水) 10:13

 あぁ、金額昇順でしたか?(読み取り力がプアになってきました。反省)
 Sheet1 1行目がタイトル行というのも含め、以下、リバイス。

 Private Sub Worksheet_Activate()
    Dim r As Range
    Dim w As Variant
    Dim x As Long
    Dim j As Long

    With Sheets("Sheet1").Range("A1").CurrentRegion
        With .Offset(1).Resize(.Rows.Count - 1)
            ReDim w(1 To Int(.Cells.Count / 2), 1 To 2)
            For Each r In .Rows
                For j = 1 To .Columns.Count Step 2
                    If IsEmpty(r.Cells(j)) Then Exit For
                    x = x + 1
                    w(x, 1) = r.Cells(j).Value
                    w(x, 2) = r.Cells(j + 1).Value
                Next
            Next
        End With
    End With

    Application.ScreenUpdating = False
    UsedRange.ClearContents
    Range("A1").Resize(UBound(w, 1), UBound(w, 2)).Value = w
    Range("A1").CurrentRegion.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlNo

 End Sub

(β) 2015/08/26(水) 10:25


 すまない、式の確認が不十分だった。

 A1:=IFERROR(INDEX(Sheet1!$A$2:$F$10,RIGHT(C1,2),LEFT(RIGHT(C1,4),2)),"")
 B1:=IFERROR(INT(C1),"")
 C1:=IFERROR(SMALL(IFERROR(IF(Sheet1!$A$2:$F$10="","",Sheet1!$A$2:$F$10)+(COLUMN($A:$F)-1)/100+((ROW($2:$10)-1)/10000),""),ROW(A1)),"")
 としてくれ。
 C1セルのShift+Ctrl+Enterを忘れずに。
(ねむねむ) 2015/08/26(水) 10:54

ありがとうございます。
出来ました。
本当に助かりました。
(ゆき) 2015/08/26(水) 12:45

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.