[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一覧の作成』(ゆき)
初心者です。教えて頂けますでしょうか。
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
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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.