[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入力したデータを一覧へ追加+重複を削除』(へ眉毛)
お世話になっています。こんな事出来るか分かりませんが質問させて下さい。
例えば、通常は別のファイルにある業者一覧表をA1セルで入力規則のリストで選択。但し、新規で追加したい業者名があった場合は直接A1セルに入力すると一覧表に追加される。こんな事は可能でしょうか?
今は直接入力せず、一覧表に追加しリスト範囲で反映させています。出来れば前者に変更したいので誰か知っている方教えて頂ければ幸いです。
WindowsXP。Excel2000。です
一覧表が別ファイルというのが曲者ですね。 別ファイルのBook名とそのリストが入力されているSheet名はなんなのでしょうか? ついでに、A1セルに入っている入力規則の元の値はなんですか? (ROUGE)
book名 :選択リスト sheet名:業者名リスト A1セルの元の値:D297:D396(←上記sheetのセルD11:D110の値ここに反映)となっております。
まだあまりやり方が分かっていないので遠回りなやり方をしてるかもしれませんが…
すみません。
わざわざ同じシートにデータを飛ばす必要性があるのでしょうか? 同じシートならばもっと簡単にできそうですが。 (ROUGE)
以前は同じシート内に一覧を設けていたのですが、物件別にbookを分けているため追加が発生した場合に次の物件になるとそれが反映されないのです。それだったら一覧だけのbookを作って、そこから引っ張る。でも同じシート内じゃないとリストの選択を範囲指定出来ないので、一覧のデータをシート内に設けてる…って訳なんです。
とってもややこしくなってしまいましたが。。。
(へ眉毛)
こんぼぼっくすを使用したら いかがでせうか? (素)
選択リストを開いていることと、業者名リストがD11から隙間無く埋められていることが条件ですが、以下の手順でどうでしょうか。 A1のリストの元の値に、以下の数式を入力。 =OFFSET(INDIRECT("[選択リスト.xls]業者名リスト!D11"),,,COUNTA(INDIRECT("[選択リスト.xls]業者名リスト!D11:D65536"))) エラーメッセージタブを押し、無効なデータが入力されたら・・・のチェックを外し、OKを押す。
元のシートに戻り、シートタブを右クリックしてコードの表示を選択。 出てきた画面に下記のコードをコピペして閉じる。 (ROUGE) '---- Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet If Target.Count > 1 Then Exit Sub If Target.Address(0, 0) <> "A1" Then Exit Sub If Target.Value = "" Then Exit Sub Set ws = Workbooks("選択リスト.xls").Sheets("業者名リスト") If WorksheetFunction.CountIf(ws.Range("D11:D65536"), Target.Value) > 0 Then Exit Sub If ws.Range("D11").Value = "" Then ws.Range("D11").Value = Target.Value Else ws.Range("D65536").End(xlUp).Offset(1).Value = Target.Value End If End Sub
>でも同じシート内じゃないとリストの選択を範囲指定出来ないので https://www.excel.studio-kazu.jp/tips/0601/ ↑を参照していただければ他シートからでも指定できるそうですよ。 入力規則で元の値に =INDIRECT("sheet1!A1:A5") 例えで記載したりますが、 sheet1・・・業者一覧表のシート名 A1:A5・・・範囲 (^^)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.