[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『特定の文字を入力したら、特定の文字を表示させたい』(エクセル超初心者)
いつも過去ログなど拝見させていただいてお世話になっております。
検索して、自分がやりたいことと中々一致しなかったので、質問させてください。
Seet2に【図1】のようなベースのデータがA1〜D31まであり、
Seet1にある【図2】のような表のG列に、【図1】のA列の●●社と入力したら
【図1】のB2〜D3が【図2】のC列からE列に表示されるようにしたいです。
それと同じで、▲▲社、■■社、◆◆社・・・と、特定の文字を入力したら【図2】に反映されるようにしたいです。
VROOKUPとIFの関数を合わせてかなとおもったのですが、上手くいきません。
どうかご教授お願い致します。
やりたいことが上手く伝わってなかったらごめんなさい。
【図1】
A B C D 1 備考 区間 路線 交通費 2 ●●社 AA−BB 〇線 \140 3 BB−AA 〇線 \140 4 ▲▲社 AA−CC 〇線 \140 5 CC−DD △線 \165 6 DD−FF □線 \140 7 FF−GG ◇線 \174 8 GG−FF ◇線 \174 9 FF−DD □線 \140 10 DD−CC △線 \165 11 CC−AA 〇線 \140 12 ■■社 AA−BB 〇線 \140 13 BB−DD △線 \174 14 DD−BB 〇線 \140 15 BB−AA 〇線 \140 16 ◆◆社 AA−CC □線 \174 17 CC−FF 〇線 \140 18 FF−AA 〇線 \195 ・ ・ ・
【図2】
A B C D E F G H 1 2 2016年度 3 日付 区間 路線 交通費 その他 備考 領収書 4 ●●社 5 6 ◆◆社 7 ・ ・ ・
< 使用 Excel:Excel2010、使用 OS:Windows8 >
次に、備考部分を別シートに転記するならば、キーとなる条件が必要です。
おそらく、図2でも区間と路線は入力されていて、備考だけ自動的に埋めたいということでしょうか?
そして、図1の表ですが、備考欄は上と同じ文字であっても、全部きっちり埋めておいてください。
空欄を許すと、もっと複雑で面倒な処理にしないといけませんので。
問題点ですが、区間と路線は入力されてるものとして、例えば「AA−BB」「〇線」に該当するものは2つあり、交通費部分も同じなので、特定できません。
こういう場合は、先に見つけた方で構わないならば、以下のような式になります。
=INDEX(Sheet2!$A:$A,MATCH(C4&D4,INDEX(Sheet2!$B:$B&Sheet2!$C:$C,0),0))
(???) 2016/05/25(水) 13:07
>Seet1にある【図2】のような表のG列に、【図1】のA列の●●社と入力したら >【図1】のB2〜D3が【図2】のC列からE列に表示されるようにしたいです。 ~~~~~~ これからすると該当する会社の項目をすべて表示させたいようだが。
(ねむねむ) 2016/05/25(水) 13:13
(ねむねむ)様の言う通り、備考部分の該当する会社の項目を、会社の名前を入力したら、
その会社の区間、路線、交通費を【図2】のC〜Eに表示させたいのです。
【図2】は毎月空欄から入力するものです。
【図1】は、会社ごとの区間、路線、交通費のベースです。
(エクセル超初心者) 2016/05/25(水) 13:38
図2の、例えばG4セルに「●●社」と入力すると、2行分の区間、路線、交通費を転記する、と。
図2のG6セルにある「◆◆社」というのはどういう事でしょう? 「●●社」を入力すると2行分転記されるから、引き続き6行目に「◆◆社」を入力(3行分追加転記)、ということ?
ほとんど全ての行を転記するくらいならば、図1のどこかに削除フラグ列でも用意して、オートフィルタで削除していない一覧に絞ってからコピペするだけの方が、入力が簡単な気がするのですが?
(???) 2016/05/25(水) 13:56
Private Sub Worksheet_Change(ByVal Target As Range) Dim wkB As Worksheet Dim i As Long Dim iR As Long Dim iMax As Long
If Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub If Target.Count <> 1 Then Exit Sub If Target.Row < 4 Then Exit Sub
Set wkB = Sheets("Sheet2") iMax = wkB.Cells(wkB.Rows.Count, "B").End(xlUp).Row
If Target.Value <> "" Then Application.EnableEvents = False
iR = Target.Row For i = 2 To iMax If wkB.Cells(i, "A").Value = Target.Value Then Cells(iR, "G").Value = wkB.Cells(i, "A").Value wkB.Range(wkB.Cells(i, "B"), wkB.Cells(i, "D")).Copy Cells(iR, "C") iR = iR + 1 End If Next i
Application.EnableEvents = True End If End Sub (???) 2016/05/25(水) 14:37
図1のA列を埋める件はOKでしょうか?
図1のA列は会社名なので埋まらないです。
図2の、例えばG4セルに「●●社」と入力すると、2行分の区間、路線、交通費を転記する、と。 図2のG6セルにある「◆◆社」というのはどういう事でしょう?
図2のG列は、会社名のどれかを入力した際に、
●●社は2行分、▲▲社は8行分、■■社は4行分、◆◆社は3行分・・・
と、図1のB〜D列が図2のC〜E列に表示される感じです。
本当の図1のベースは下記で、7社分あります。
【図1】
A B C D 1 備考 区間 路線 交通費 2 ●●社 AA−BB 〇線 \140 3 BB−AA 〇線 \140 4 ▲▲社 AA−CC 〇線 \140 5 CC−DD □線 \165 6 DD−FF □線 \165 7 FF−DD 〇線 \140 8 DD−CC □線 \140 9 CC−AA 〇線 \140 10 ■■社 AA−BB 〇線 \140 11 BB−CC ◇線 \165 12 CC−DD 〇線 \140 13 DD−CC 〇線 \140 14 CC−BB ◇線 \165 15 BB−AA 〇線 \140 16 ◆◆社 AA−CC △線 \174 17 CC−AA △線 \174 18 ▼▼社 AA−FF 〇線 \195 19 FF−GG ▽線 \165 20 GG−FF ▽線 \165 21 FF−AA 〇線 \195 22 〇〇社 AA−DD 〇線 \174 23 DD−AA 〇線 \174 24 △△社 AA−CC 〇線 \165 25 BB−CC ◇線 \140 26 CC−DD 〇線 \140 27 DD−EE □線 \165 28 EE−DD □線 \165 29 DD−CC 〇線 \140 30 CC−BB ◇線 \140 31 BB−AA 〇線 \140
これがベースのデータです。
この7社(A列尾行欄の特定の文字)のどれかを図2のG列に入力したら、
図1のB〜Cの列が図2のC〜F列に、その会社の分が出るようにしたいのです。
(エクセル超初心者) 2016/05/25(水) 16:32
> 図1のA列は会社名なので埋まらないです。 埋まらない、ではなく、埋めてください、と言ってます。 A列に空欄があるのは、データベースとして考えると変なのですよ。 例えば、運賃順にソートすると、空欄がごっちゃになって、破綻しますよね?
かたくなに元データを変えたくないようなので、ロジックの方を少し複雑にして対応した例を書きます。
空欄ありだと、数式での対応は難しいと思いますから。
前回同様、Sheet1のシートモジュールとして貼ってください。
Private Sub Worksheet_Change(ByVal Target As Range) Dim wkB As Worksheet Dim i As Long Dim j As Long Dim iR As Long Dim iMax As Long
If Intersect(Target, Range("G:G")) Is Nothing Then Exit Sub If Target.Count <> 1 Then Exit Sub If Target.Row < 4 Then Exit Sub
Set wkB = Sheets("Sheet2") iMax = wkB.Cells(wkB.Rows.Count, "B").End(xlUp).Row
If Target.Value <> "" Then Application.EnableEvents = False
iR = Target.Row For i = 2 To iMax If wkB.Cells(i, "A").Value = Target.Value Then For j = i To iMax If wkB.Cells(j, "A").Value = Target.Value Or wkB.Cells(j, "A").Value = "" Then Cells(iR, "G").Value = wkB.Cells(j, "A").Value wkB.Range(wkB.Cells(j, "B"), wkB.Cells(j, "D")).Copy Cells(iR, "C") iR = iR + 1 Else Exit For End If Next j End If Next i
Application.EnableEvents = True End If End Sub (???) 2016/05/25(水) 17:33
ですが、上げて頂いたコードでできました!!!
が、■■社だけ表記されません・・・
どうしたらよろしいでしょうか?
今日はPCを動かせなくなるため、ご返信を頂いたら明日まで返信できません。
宜しくお願い致します。
(エクセル超初心者) 2016/05/25(水) 17:59
対応案ですが、現状G列は手入力との事ですが、これを「データの入力規則」を使って、選択式にしてはどうでしょうか?
(???) 2016/05/26(木) 10:50
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.