[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リストで省略?』(k)
以前も質問させていただき大変わかりやすい説明ありがとうございます。 また質問ですが… リストで「バナナ」、「いちご」「ぶどう」などを作っているとして、 それが300近くあるのでいちいちリストから選択していたら時間がかかります。 そこでA1のセルにリストで選択しA2のセルでIFとVLOOK(FLASH)を使って シート3にある金額がでるようにしているのですが、長い名前を選択したいとき… たとえば「マスクメロン」などのとき「マスク」まで打ちENTERで勝手に 「マスクメロン」まで打ったようにすることはできますか? 説明下手ですが、例は果物ですが建設関係なので、 「コンクリート配合」、「コンクリート打込み」などたくさん似たような名前があり、 しかもリストで選択すると時間がかかるので手打ちでも金額がでるようにしたいのです。 手打ちでも送り仮名などの関係がぴったり一致しないとでないので、 手打ちの補助的な存在としてリストを使っているのですが、 手打ちして手打ちと一致するものがリスト内から出てくるような形にできませんか? 「コンクリ」と打ったら300のなかから「コンクリート配合」「コンクリート打込み」 がリスト内にでてくる。といった事できますか?
こんにちは セルを分ければ以下のようなことは可能ですが 『リストから選択』(若葉マーク) [[20051024111302]] ↑こちらの純丸さんの方法でA1に入力された値により B1のリストをA1の値によって変更させます。 A1にコンクリートと入力して B1のリストから配合・打込みをリストで選択 C1に=A1&B1 リストを作るのが大変そうですが。。 (oni)
>たとえば「マスクメロン」などのとき「マスク」まで打ちENTERで勝手に >「マスクメロン」まで打ったようにすることはできますか? これはオートコレクトの機能と同じではないでしょうか? 例えば、ツール→オートコレクトのオプションでオートコレクタタブにある 「修正文字列」 「修正後の文字列」 「こん@はい」 「コンクリート配合」 「こん@うち」 「コンクリート打込み」 といった風に通常入力しない文字列を使って、自動で修正させるようにするのですが いかがなものでしょう? 入力時の規則(上の例では「2文字@2文字」)を覚えないといけないとか、 入力する文字を登録するのが面倒かもしれません。 また、設定によってはかえって使い勝手が悪くなるという諸刃の剣?にもなりかねませんが・・・ (Hatch@Excel2002)
リストを作るのであれば、私も一案。
listというシートを作成。 1行目に見出し、2行目以降にその見出しに含まれる項目を追加してください。
リストを表示したいシートに次の関数を入力。
(例示ではA1、A2を作業セル、B1、B2をリスト表示するセルと設定)
A1(作業セル)="list!R1C1:R1C"&COUNTA(list!$1:$1)
B1の入力規則、リストに=INDIRECT($A$1,FALSE)を入力
A2(作業セル)="list!R2C"&MATCH(B1,INDIRECT(A1,FALSE))&":R"&
COUNTA(INDIRECT("list!C"&MATCH(A2,INDIRECT(A1,FALSE)),FALSE))&
"C"&MATCH(B1,INDIRECT(A1,FALSE))
B2の入力規則、リストに=INDIRECT($A$2,FALSE)を入力
リストは見出しを作るルールさえ守れば追加可能です。 いかがでしょうか? (ROUGE)
マクロで入力規則を差し替える試作。
【準備】
50音順のリストを別シートへ作成。
この例ではSheet2という名前のシートのA1から下記のようなリストを作成。
見出しは「読みの一文字目をあらわすひらがな」とします。
下記では試作版のため「あ行、か行・・・」の区分リストにしてあります。
[Sheet2]
あ か さ
アールスメロン キングデラ さちのかイチゴ
青島みかん クレオパトラメロン 佐藤錦
アムスメロン 小玉スイカ サンつがるりんご
アンデスメロン ジョナゴールりんご
印度りんご
王林りんご
入力を行うシートの見出しを右クリック、「コードの表示」を選択、
VBEが起動したら、コードウィンドウへ下記コードを貼り付け。
Alt+Q でエクセルに戻ります。
Private Sub Worksheet_Change(ByVal Target As Range)
Rem AutoValidateListChange
Const MyRng As String = "A1:A10"
Const MySh As String = "Sheet2"
Dim MyName As Name, Flag As Boolean
Rem 初期判定:Targetセル数=1,Targetの文字数=1
If Target.Count > 1 Then Exit Sub
If Len(Target.Value) <> 1 Then Exit Sub
Flag = False
Rem ブックの名前削除
For Each MyName In ThisWorkbook.Names
MyName.Delete
Next MyName
Rem ブックの名前再設定
Worksheets(MySh).Range("A1").CurrentRegion.CreateNames _
Top:=True, _
Left:=False, _
Bottom:=False, _
Right:=False
Rem Targetへの入力かなを判定して入力規則設定
If Not Intersect(Target, Me.Range(MyRng)) Is Nothing Then
For Each MyName In ThisWorkbook.Names
If MyName.Name = Target.Value Then
With Target.Validation
.Delete
.Add _
Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="=" & Target.Value
.IgnoreBlank = True
.InCellDropdown = True
.ShowError = False
.IMEMode = xlIMEModeHiragana
End With
Target.Select
SendKeys "%{Down}"
Exit Sub
Else
Flag = True
End If
Next MyName
If Flag Then MsgBox "その読みの単語登録はありません。"
Target.Select
End If
End Sub
【使用方法】
コードを登録したシートのA1〜A10の範囲で「ひらがな」を一字入力してEnter。
読みに応じた入力規則のリストから選択が可能です。
上記例ではA1へ「か」と入力しEnterすると、
「キングデラ、クレオパトラメロン、小玉スイカ」の中から選択。
上記のリストでは「あ行、か行・・・」の区分リストにしてあるけれども、
もっと細かく50音別区分のリストを作成すれば、それに対応します。
【注意事項】
(1)コード中、下記部分がそれぞれ、入力範囲、リスト作成シート名の設定部分な
ので、適宜変更してください。
Const MyRng As String = "A1:A10"
Const MySh As String = "Sheet2"
(2)リストの見出しはひらがなを想定しているので、英数全角半角文字は使わない。
これは英数字ではセルの値と作成される名前が一致しなくなるため。
英数字以外であれば、ひらがなでなくてもかまいませんが、読みの一文字目が
たぶん楽でしょう。
(3)ブックの定義された「名前」を全削除するコードが含まれるので、すでに名前
定義の行われているブックで使用しないようにしてください。
(4)ツール>オプションのオートコンプリートはOffにしておいたほうがよいでし
ょう。
(5)あくまで連続セルを想定。
(みやほりん)(-_∂)b
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.