[[20050126231037]] 『同じセルに違う内容を書き込むには・・・』(ルル) ページの最後に飛ぶ

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

 

『同じセルに違う内容を書き込むには・・・』(ルル)

例えばA1のセルに1と入力したとき同じA1のセルに"黒"と、2と入力したときは"白"と文字列を表示する方法を教えてください。


 回答ではないですが、なぜそのようなことをされたいのでしょうか。

 入力を簡単にするだけならば、入力規則って方法もありますけど。
 (川野鮎太郎)


大量のデータをエクセルで入力することになり、少しでも入力スピードを上げるために簡略化を図ろうと思い、質問をしてみました。確かに入力規則を使うという方法は知っていますが、その項目を打つたびにマウスに手を移動させなければならないと思い、その分ロスになるなと考え、質問した内容ができたらいいなと思ったのです。


 表示形式で出来ないことも無いようですが、私だったら以下のようなことで対処すると思います。

 入力は1,2で行い、入力が終わったら置換えで1は黒、2は白など。

 (川野鮎太郎)


あっ、そうですね!目先にとらわれて難しく考えていた気がします。
どうもありがとうございました
(ルル)


 参考までに。 表示形式であれば、このようなことでしょうか。
 [=1]"黒";[=2]"白";G/標準 

 (川野鮎太郎)

川野さん、連絡遅くなりましたがアドバイスどうもありがとうございます。
早速やってみました。セルの書式設定のユーザー設定の種類でこの内容をセットするのだと思いますが、[=1]"黒";[=2]"白";をセットしたらうまくいきました。ただこの後に
、[=1]"黒";[=2]"白";[=3]"茶";[=4]"赤";とセットしたときは入力した表示形式が正しくないというエラーが出てしまいました。理由がわからないので、教えていただけないでしょうか。お願いいたします。(ルル)


 にゅにゅにゅ!まだ諦めてなかったんですね(^_^A;
 こちらに参考になるみやほりんさんのコメントがあります。
[[20041105165045]] 『勤怠管理について』(理解力がありません) 

 (川野鮎太郎)

 うぬぬぬう、鮎太郎さん、速い!
表示形式の;(セミコロン)で分けられたセクションで条件付けできるのは
最初の2セクションまで。
それに全部でも4セクションだからあまり多くの設定はできません。
「入力は簡単に、なおかつ表示は多様に」を実現するなら、やはり
入力セルと表示セルを分けて関数による表示が適。
=CHOOSE(A1,"黒","白","茶","赤")
セル分けを嫌うならマクロになってしまいます。
(みやほりん)


 (* ̄σー ̄)ゞへへ♪速さだけはまけません!^^v
 (川野鮎太郎)

 ツール、オートコレクトとして、修正文字列と修正後の文字列にそれぞれ、
 ++1 → AA
 ++2 → BB
 ++3 → CC
 ++4 → DD
 ++5 → EE
  …   …
 などと登録しておく方法もありますね。こちらは、大分登録できます。   (LOOKUP)


 私も同じようなことをしたくてこんなのを作って使ってます。
 ただVBA初心者なのでベテランの方から見たら無駄が多いコードかもしれません・・・。
 もし直せるところがあったら直してください。
 例:B2からB10の範囲
 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim c1, r1 As Long

 Select Case Target.Row
 Case 2 To 10
 Select Case Target.Column
 Case 2

 r1 = Target.Row
 c1 = Target.Column

 If Cells(r1, c1) = "1" Then
           Cells(r1, c1) = "黒"
 End If

 If Cells(r1, c1) = "2" Then
           Cells(r1, c1) = "白"
 End If

 If Cells(r1, c1) = "3" Then
           Cells(r1, c1) = "赤"
 End If

 If Cells(r1, c1) = "4" Then
           Cells(r1, c1) = "茶"
 End If

 End Select
 End Select

 End Sub
(miu)

 出来るだけ元の書き方を尊重した上でまとめます。
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c1 As Long, r1 As Long
    Select Case Target.Row
        Case 2 To 10
            Select Case Target.Column
                Case 2
                    r1 = Target.Row
                    c1 = Target.Column
                    If Cells(r1, c1) = "1" Then
                        Cells(r1, c1) = "黒"
                    ElseIf Cells(r1, c1) = "2" Then
                        Cells(r1, c1) = "白"
                    ElseIf Cells(r1, c1) = "3" Then
                        Cells(r1, c1) = "赤"
                    ElseIf Cells(r1, c1) = "4" Then
                        Cells(r1, c1) = "茶"
                    End If
            End Select
    End Select
End Sub

 変更点
・変数の宣言時、各型を明記(以前の書き方ではc1はVariant扱い)
・個別にIfを記述すると各If文を全てチェックし冗長なのでElseIfと書き換え。
・インデントを調整
 参考:ライブラリより (e1pw)VBA字下げとIF文Win
 https://www.excel.studio-kazu.jp/lib/e1pw/e1pw.html
(ご近所PG)ちょい修正

 ありゃまぁ、、皆さん早いですねぇ。。
せっかくかいたので、私なら、、ということでアップしておきます。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B2:B10")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
    With Target
        Select Case .Value
            Case 1
                .Value = "黒"
            Case 2
                .Value = "白"
            Case 3
                .Value = "赤"
            Case 4
                .Value = "茶"
        End Select
    End With
Application.EnableEvents = True
End Sub
(SoulMan)

皆さん、本当にありがとうございました。パターンによって使い分けをしていきたいと思います。初めてこのサイトを利用しましたが、皆さんの暖かさにとても感激しています。これからも活用させていただきたいと思いますので、よろしくお願いいたします。
(ルル)

 私も便乗で勉強になりました。m(__)m
 ありがとうございます。
 (miu)

コメント返信:

[ 一覧(最新更新順) ]


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