dポイントプレゼントキャンペーン実施中!

A1セルに「あいうあいう」
A2セルに「かきくけかきくけ」
等の文字列があります。
この同一セル内でダブっている文字を削除し、「あいう」「かきくけ」のようにしたいです。

できればマクロではなく、Excelの機能や関数でやりたいのですが、方法はありますでしょうか?

質問者からの補足コメント

  • 書き方が悪かったです、すみません。
    A1セルの「あいうあいう」を「あいう」
    A2セルの「かきくけかきくけ」を「かきくけ」
    にしたい、という意味でした。

      補足日時:2020/03/16 22:15

A 回答 (4件)

補足を見てもまだ曖昧さが残りますが、


こういうことでしょうか?

=IF(ISEVEN(LEN(A1)),IF(LEFT(A1,LEN(A1)/2)=RIGHT(A1,LEN(A1)/2),LEFT(A1,LEN(A1)/2),A1),A1)

> A1セルの「あいうあいう」を「あいう」
> A2セルの「かきくけかきくけ」を「かきくけ」

「あいうかあいう」「あいうういあ」などは削除しないということでよろしいのでしょうか?
    • good
    • 0

A列にデータがあるとして



---------------------------
展開
C1に
=MID($A1,COLUMN()-2,1)
を横に文字数コピー

-----------------------------
必要文字
M1に(文字が多ければ右にずれます)
=C1
N1に
=IF(M1=D1,"",D1)
O1に(右へコピー)
=IF(SUMPRODUCT((E1=$M1:N1)*1)>0,"",E1)

-----------------------------------
必要列計算(そのままの列)
W1に(右へコピー)
=IF(M1="",10000,COLUMN()-10)-10

-------------------------------------------
必要列計算(つめ)
AI1に(右へコピー)
=SMALL($W1:$AF1,COLUMN()-34)

-------------------------------------------
結果
AR1に(右へコピー)
=IF(AI1<9000,INDIRECT(ADDRESS(ROW(),AI1)),"")
    • good
    • 0

こんばんは!



VBAなら簡単にできますが、VBA以外の方法をご希望だというコトなので・・・
一例です。
↓の画像のようにD列以降を作業用として使用しています。
(とりあえず、10文字まで対応できるようにしました)

D1セルに
=LEFT(A1,1)

E1セルに
=IF(COUNTIF($D1:D1,MID($A1,COLUMN(B1),1)),"",MID($A1,COLUMN(B1),1))
という数式を入れ右へフィル&コピー!

D1~最終列までを範囲指定 → 最終列のフィルハンドルで下へコピーしておきます。

そして、B1セルに
=D1&E1&F1&G1&H1&I1&J1&K1&L1&M1

という数式を入れフィルハンドルで下へコピー!
これで画像のような感じになります。

※ 余計なお世話かもしれませんが、自分であればこの質問限定の関数(ユーザー定義関数)を作ります。
標準モジュールに↓のコードをコピー&ペースト

Function myStr(c As Range)
 Dim k As Long, buf As String
  For k = 1 To Len(c)
   If InStr(buf, Mid(c, k, 1)) = 0 Then
    buf = buf & Mid(c, k, 1)
   End If
  Next k
   myStr = buf
End Function

そして通常のワークシート関数と同じ使い方をします。
B1セルに
=myStr(A1)

という数式を入れ、フィルハンドルで下へコピー!

※ 注意点 ※
A列の同セル内に 1や12のように文字列があると、「1」が重複されていると判断されます。m(_ _)m
「同一セル内の重複文字を削除したいです」の回答画像2
    • good
    • 0

>この同一セル内で



A1セルとA2セルですから、同一ではありませんよ

文字列を検索して削除
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A